kostenloser Webspace werbefrei: lima-city


Problem beim Lesen aus der DB

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    hts

    hts hat kostenlosen Webspace.

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. 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
  4. Autor dieses Themas

    hts

    hts hat kostenlosen Webspace.

    $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.
  5. 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
  6. Autor dieses Themas

    hts

    hts hat kostenlosen Webspace.

    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.
  7. r*x

    seh ich das ich das richtig das keine fehlermeldung kommt und deine problem ist dass es nur einmal ausgegeben wird?

    MfG r1x
  8. Autor dieses Themas

    hts

    hts hat kostenlosen Webspace.

    Ja, das siehst du richtig.

    Zumindestens teilweise. Denn das "$row['name']" wird gar nicht ausgegeben -.-
  9. r*x

    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
  10. 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
  11. Hinter deiner while-Schleife ist ein ; dann kann es nicht gehen. Probiers mal ohne:
    //[...]
    while($row = mysql_fetch_array($ergebnis_row))
    //[...]

  12. r*x

    oh stimmt ok^^ aber wenn da nen ; ist m?sste doch eigentlich eine fehlermeldung kommen oder?

    MfG r1x
  13. 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.
  14. Autor dieses Themas

    hts

    hts hat kostenlosen Webspace.

    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?!

  15. 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
  16. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!