Problem beim Lesen aus der DB
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
ausgabe
ausschneiden
beispiel
beitrag
datensatz
ergebnis
fehler
fehlermeldung
kurzform
lag
letzte spalte
level
listen
quelltext
schleifen
spalten
status
vielen dank
warnung
wert null
-
Hallo Leute.
Ich habe Probleme bei einem Scrupt, wo ich einfach nur die Datens?tze (To-Do-Liste) auslesen m?chte und dann wiedergeben m?chte.
... $ergebnis_row = mysql_query('SELECT * FROM `todo` ORDER BY `id` DESC'); while($row = mysql_fetch_array($ergebnis_row)); { if ($row['status'] == 0) { $status_text='<strong><font color="#FF0000">X</font></strong>'; } elseif ($row['status'] == 1) { $status_text='<strong><font color="#00FF00">erledigt</font></strong>'; } elseif ($row['status'] == 2) { $status_text='<strong><font color="#FF0000">abgebrochen</font></strong>'; } else { $status_text='unbekannt'; } $todo_text .= ' <tr class="invisible"> <td class="text"> '.$row['name'].' </td> <td class="text"> '.$status_text.' </td> </tr> '; }
- Das ist der Ausschnitt, der betroffen ist.
- Fehlermeldung kommt keine.
- Das Ergebnis dieses Scripts kann man sich also da angucken:
http://hts.pyrokar.lima-city.de/index.php?seite=todo
In der Datenbank sind 5 Datens?tze enthalten. Im Quelltext wird das aus der while-Schleife allerdings nur 1 mal angezeigt. Zu dem wird $row['name'] weggelassen.
In der Datenbank ist allerdings garantiert etwas drin in der Spalte.
Dake im Voraus f?r die Hilfe.
Beitrag ge?ndert am 25.12.2005 17:45 von hts -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Wird denn "$todo_text" nachher wirklich ausgegeben?
Ist im Script ja leider nicht zu sehen.
F?r Fehlermeldungen sollte man das Error-Report-Level (what ever...) auf E_ALL setzen. Dadurch werden Hinweise, Warnungen und Fehler angezeigt. Gerade zum debuggen sehr sinnvoll.
error_reporting ( E_ALL );
Die Variable "$todo_text" sollte vor der "while"-Schleife definiert werden. Also einfach den Wert null zugewiesen bekommen, damit keine Warnung ausgegeben wird. Der Fehler f?r die nicht Ausgabe ist es glaube ich aber nicht.
MfG Lucas -
$todo_text wird am Ende ausgegeben. Wie gesagt, ein Teil davon ist dann ja auch im Quelltext wiederzufinden.
$todo_text wird nun auch am Anfang definiert.
Die Warnungen habe ich nun beseitigt, das Problem besteht aber leider weiterhin. -
Mhhh...,
dann schreib einfach mal :
//[...] while($row = mysql_fetch_array($ergebnis_row)); { print_r ( $row ); print ( '<br />' ); }
und poste, was ausgespuckt wird.
MfG Lucas
Beitrag ge?ndert am 25.12.2005 19:46 von lucas9991
Beitrag ge?ndert am 25.12.2005 19:46 von lucas9991 -
Ich habe beim 2. print mal das '<br />' durch 'Das hier wird ausgespuckt!<br />' ersetzt, damit man es besser merkt ;)
Durch den Code wird also auch genau das 1 mal ausgespuckt.
Sprich f?r dein Beispiel w?rde nur '<br />' ausgespuckt werden. -
seh ich das ich das richtig das keine fehlermeldung kommt und deine problem ist dass es nur einmal ausgegeben wird?
MfG r1x -
Ja, das siehst du richtig.
Zumindestens teilweise. Denn das "$row['name']" wird gar nicht ausgegeben -.- -
warum hast du eigentlich hier ein punktvor dem =???:
$todo_text .= '
edit: und vielleicht w?re es besser wenn du mehr vom code zeigen w?rdest...
MfG r1x
Beitrag ge?ndert am 25.12.2005 20:19 von r1x -
hts schrieb:
Ich habe beim 2. print mal das '<br />' durch 'Das hier wird ausgespuckt!<br />' ersetzt, damit man es besser merkt ;)
Durch den Code wird also auch genau das 1 mal ausgespuckt.
Sprich f?r dein Beispiel w?rde nur '<br />' ausgespuckt werden.
Auch gut.
Jetzt wissen wir, dass das Array "$row[]" leer ist, bzw. nur einen leeren Datensatz enth?lt, denn sonst w?rde gar nichts ausgegeben.
Also liegt das Problem am MySQL Query. Oder es sind keine Daten in der Datenbank!?
?berpr?fe einfach beides. Der PHPMyAdmin ist auch n?tzlich zum Query angeben.
Au?erdem w?re es vllt auch sinnvoll eimal zu lesen, was MySQL so sagt.
Also "print ( mysql_error () );" reinschreiben und Ausgabe anschauen.
MfG Lucas
edit :
warum hast du eigentlich hier ein punktvor dem =???:
$todo_text .= '
edit: und vielleicht w?re es besser wenn du mehr vom code zeigen w?rdest...
MfG r1x
Beitrag ge?ndert am 25.12.2005 20:19 von r1x
Weil sonst immer nur die letzte Spalte ausgegeben w?rde...
$a = 'blub'
$a .= 'bla';
// ergibt "blubbla"
// das ist die Kurzform von
$a = 'blub';
$a = $a.'bla';
Beitrag ge?ndert am 25.12.2005 20:28 von lucas9991
edit2 :
@tct :
*hmpf*
Voll ?bersehen.
Daran wirds liegen.
Beitrag ge?ndert am 25.12.2005 20:45 von lucas9991 -
Hinter deiner while-Schleife ist ein ; dann kann es nicht gehen. Probiers mal ohne:
//[...] while($row = mysql_fetch_array($ergebnis_row)) //[...]
-
oh stimmt ok^^ aber wenn da nen ; ist m?sste doch eigentlich eine fehlermeldung kommen oder?
MfG r1x -
Habs grade probiert: wenn man ein ; hinter die while-Schleife baut, liest er nur einen Datensatz aus ohne Fehlermeldung und so. Probier es einfach mal ohne.
-
Vielen Dank.
Endlich l?uft es.
Aber lustig, denn lucas9991, du hast bei deinem Beispiel auch das ";" dahinter gemacht und es nicht bemerkt ^^
Aber ok, kann geschlossen werden dann sonst so, ne?! -
Vielen Dank.
Endlich l?uft es.
Aber lustig, denn lucas9991, du hast bei deinem Beispiel auch das ";" dahinter gemacht und es nicht bemerkt ^^
Aber ok, kann geschlossen werden dann sonst so, ne?!
Das lag daran, dass ich den Code kopiert habe. ^^
MfG Lucas -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage