Anfängerfehler bei Mysql Abfrage / Ausgabe
Heinrich
- php
Halli hallo
liebe Leute ich habe eine ganz banale Abfrage und irgendwo einen Fehler den ich einfach nicht sehe. Wenn ich die MySql abfrage in Phpmyadmin kopiere funktioniert es wunderbar, aber im Script gibt er mir das Abfrageergebnis einfach nicht aus und ich stehe anscheinend gerade vollkommen auf dem Schlauch.
Wäre nett wenn ihr mir weiterhelfen könntet.
Hier der Code:
$fort_query="SELECT MAX(fortlaufend) as maximum from tabelle";
$fort_erg=mysql_query($fort_query);
if(!$fort_erg) die ("Nummer konnte nicht ermittelt werden");
else
{
while($nummer=mysql_fetch_array($fort_erg));
{
$fortlaufend=$nummer["maximum"];
echo "<p>Erster Versuch";
echo $nummer["maximum"];
echo "</p>";
echo "<p>Zweiter Versuch";
echo $fortlaufend;
echo "</p>";
}
}
Will also einfach den Maximal-Wert des Feldes fortlaufend (int) in der Tabelle ermitteln und als Variable ausgeben haben um dann später im Script damit zu arbeiten. Ich weiß das while ist nicht unbedingt nötig aber im Zuge meiner diversen Versuche bin ich mittlerweile da gelandet. Egal was ich gemacht habe die Variable $fortlaufend wird nicht gefüllt.
Und wenn später fortlaufend++; kommt bekomme ich immer als ersten Wert 1
Ich sehe den Fehler einfach nicht.
Danke schonmal für eure Zeit und Hilfe
Heinrich
Hi!
Ich sehe den Fehler einfach nicht.
Ich bin auch kein Hellseher, deswegen musst du selbst wieder ran und mit Kontrollausgaben die Arbeitsweise des Scripts verfolgen.
Wenn ich die MySql abfrage in Phpmyadmin kopiere funktioniert es wunderbar, aber im Script gibt er mir das Abfrageergebnis einfach nicht aus
Wer ist "er"? Welche Script-Teile werden abgearbeitet, welche nicht und wie sollte es eigentlich sein? Welche Variablen und Funktionsrückgaben enthalten welche Werte und wie stimmt dabei Wunsch mit Wirklichkeit überein oder auch nicht? Das error_reporting auf E_ALL (und display_errors auf on) zu stellen hilft auch beim Finden von Fehlern, weil durch die nun angezeigten Notice-Meldungen auch Zugriffe auf nicht vorhandene Variablen sichtbar werden.
if(!$fort_erg) die ("Nummer konnte nicht ermittelt werden");
else
Das else ist überflüssig. Wenn die Bedingung zutrifft, wird das Script mit die() beendet. Weder else noch der nachfolgende Code wird ausgeführt. Anderenfalls wird sowohl else als auch das Nachfolgende ausgeführt.
Ich weiß das while ist nicht unbedingt nötig aber im Zuge meiner diversen Versuche bin ich mittlerweile da gelandet.
Warum machst du es dann? Nicht die am vielleicht häufigsten verwendeten Kombinationen von Code-Teilen führen zum Erfolg sondern der sinvolle Einsatz. Dazu gehört, dass ma sich informiert, wie die Funktion im Gut- und Fehlerfall arbeitet und was sie zurückgibt. Eine Fetch-Funktion gibt entweder einen Ergebnis-Datensatz oder false zurück. Ob sie innerhalb einer while-Bedingung oder sonstwo steht, ist ihr komplett egal.
Egal was ich gemacht habe die Variable $fortlaufend wird nicht gefüllt.
Dann scheint es, als ob der Teil gar nicht abgearbeitet wird - sprich: das DBMS kein Ergebnis liefert. Prüf das durch eine Anzeige der Funktionsergebnisse. Alternativ geht auch eine Ausgabe in einem bedingten Block, die anzeigt, dass er ausgeführt wird.
Lo!
Hi,
$fort_query="SELECT MAX(fortlaufend) as maximum from tabelle";
$fort_erg=mysql_query($fort_query);
if(!$fort_erg) die ("Nummer konnte nicht ermittelt werden");
Du solltest hier auf gar keinen Fall auf die Idee kommen, die von mysql gelieferte und per mysql_error() abrufbare) Fehlermeldung auszugeben - sonst erkennst Du eventuell noch, was das Problem sein könnte.
(mir fehlt z.B. das Verbinden mit der Datenbank - findet das statt?)
Ich sehe den Fehler einfach nicht.
Ich auch nicht.
Du machst es uns aber auch nicht leicht - Du sagst uns ja nichtmal, was denn jetzt von Deinem Code ausgegeben wird.
cu,
Andreas
Hi,
$fort_query="SELECT MAX(fortlaufend) as maximum from tabelle";
$fort_erg=mysql_query($fort_query);
if(!$fort_erg) die ("Nummer konnte nicht ermittelt werden");Du solltest hier auf gar keinen Fall auf die Idee kommen, die von mysql gelieferte und per mysql_error() abrufbare) Fehlermeldung auszugeben - sonst erkennst Du eventuell noch, was das Problem sein könnte.
(mir fehlt z.B. das Verbinden mit der Datenbank - findet das statt?)
Ich sehe den Fehler einfach nicht.
Ich auch nicht.
Du machst es uns aber auch nicht leicht - Du sagst uns ja nichtmal, was denn jetzt von Deinem Code ausgegeben wird.
Sorry,
da hast Du recht, Datenbankverbindung hätte ich noch angeben können - die ist aber gegeben
und natürlich hätte ich melden müssen was ausgegeben wird, nämlich:
<p>Erster Versuch</p>
<p>Zweiter Versuch</p>
Sorry,
Heinrich
Hallo Heinrich,
while($nummer=mysql_fetch_array($fort_erg));
{
$fortlaufend=$nummer["maximum"];
Hast du dir mal ausgeben lassen was $nummer zu dem Zeitpunkt enthält? Durch das Semikolon am Ende der while-Zeile hast du eine leere Schleife definiert - und der von geschweifen Klammern eingeschlossene Block dahinter wird nach der Schleife genau einmal durchlaufen nur dass $nummer zu dem Zeitpunkt dummerweise bereits false ist ...
Gruß,
Tobias
Danke,
das Semikolon habe ich total übersehen - hat da natürlich nichts zu suchen...
Grüße
Heinrich