Rolf Sonderegger: Finde die richtige Schleife nicht.

tach wohl forum!

ich mache eine datenbank abfrage mit php und generiere nachher html code.

das sieht so aus:

tabelle news:
spalten: datumzeit header content

[anfang php kommentar]
1: $result = mysql_query("SELECT * FROM news ORDER by datumzeit DESC LIMIT 0,1",$db);
2:
3: if ($myrow = mysql_fetch_array($result)) :
4:  
5:   $datumzeit = $myrow["datumzeit"];
6:   $content = $myrow["content"];
7:   $header = $myrow["header"];
[/ende php kommentar]

html ausgabe.

[anfang php kommentar]
8:
9:
10:     else :
[/ende php kommentar]

html ausgabe.

[anfang php kommentar]
11:     endif;
[/ende php kommentar]

so wird genau eine zeile aus den news ausgelesen. das ist natürlich nicht der sinn - es sollen alle news ausgelesen werden!

ich hatte zuerst in zeile 4 diese while bedingung eingefügt:

4: while($myrow = mysql_fetch_array($result)) :

und in zeile 8:

8: endwhile;

so wird aber die erste zeile der tabelle nat. ausgelassen.

nächster ansatz mit do...while - dafür gibt es aber keine advanced syntac mit do : / enddo; oder so...

meine jetzige lösung ist, dass ich die erste zeile ausgebe und dann das ganze in die while - schlaufe packe, da muss ich aber zweimal den ganzen html block hinschreiben...

gibts da nix anderes - im sinne von do : ... enddo;

sollte für php version 3.xxx sein nicht 4

vielen dank!

Siramon

ps: ich brauche keinen code - nur lösungsansätze.

  1. tach wohl forum!

    ich mache eine datenbank abfrage mit php und generiere nachher html code.

    das sieht so aus:

    tabelle news:
    spalten: datumzeit header content

    so wird genau eine zeile aus den news ausgelesen. das ist natürlich nicht der sinn - es sollen alle news ausgelesen werden!

    hallo,

    versuch das mal hier:

    $result=mysql_query("Select datumzeit,header,content from news");
    while(list($datumzeit,$header,$content)=mysql_fetch_row($result)){
    echo "<tr><td>$datumzeit</td><td>$header</td><td>$content</td></tr>";
    }
    mysql_free_result($result);

    in der schleife kannst du natürlich noch voher die "datumzeit" umformatiern oder sonstiges machen. im grund prinzip ist es ein 4 zeiler :-)

    lg
    Luwdig

    1. hallo ludwig, hallo forum

      $result=mysql_query("Select datumzeit,header,content from news");
      while(list($datumzeit,$header,$content)=mysql_fetch_row($result)){
      echo "<tr><td>$datumzeit</td><td>$header</td><td>$content</td></tr>";
      }
      mysql_free_result($result);

      hmm das problem ist mehr, dass ich vorher eine if abfrage mache, um eine spezielle meldung auszugeben, falls es keine news hat.

      dort benutzte ich auch mysql_fetch_row oder mysql_fetch_array und bei diesen zwei funktionen springt der zeiger ja in die nächste zeile!

      darum habe ich zuerst den ansatz mit do ... while versucht.
      klappt auch ganz wunderbar - aber ich möchte die advanced syntax benutzen (ist recht komplexer html code dazwischen).

      bei while ... endwhile und if ... endif kenn ich die advanced syntax bei do ... while steht aber nix in den manuals...

      any ideas?

      mfg

      Siramon

      1. Hallo !

        Um abzufragen, ob News da sind oder nicht und gegebenenfalls eine gesonderte Meldung auszugeben
        brauchst Du doch kein fetch_array usw.

        Du kannst doch mit

        if (mysql_num_rows($result) < 1) {
              echo "keine Sätze gefunden.";
        } else {
              echo "Sätze gefunden...";
        }

        auf das Ergebnis reagieren.

        Wenn Du die Anzahl für später (Ausgabe) noch brauchst, dann nimm:

        if (($anz = mysql_num_rows($result)) < 1) {

        Sonst noch mal genauer Erläutern (genaue Aufgabenstellung ?)

        Gruß, Knud (der sich freuen würde, wenn auch er mal helfen konnte)

        1. hallo knud, hallo ludwig, hallo forum

          ich sag da nur mal wieder das beispiel mit dem brett vor dem kopf und bäume und wald und so... ;)

          ich hab mich wohl zu fest auf mysql_fetch_array konzentriert und eine andere möglichkeit hier ausser acht gelassen!

          vielen dank euch beiden!

          mfg

          Siramon

      2. Hallo,

        hmm das problem ist mehr, dass ich vorher eine if abfrage mache, um eine spezielle meldung auszugeben, falls es keine news hat.
        bei while ... endwhile und if ... endif kenn ich die advanced syntax bei do ... while steht aber nix in den manuals...

        any ideas?

        obwohl du es schon hast...

        versuch diese erweiterung:

        if($result=mysql_query("Select datumzeit,header,content from news")){
          while(list($datumzeit,$header,$content)=mysql_fetch_row($result)){
          echo "<tr><td>$datumzeit</td><td>$header</td><td>$content</td></tr>";
        }
          mysql_free_result($result);
        }else{
          echo"kein Eintrag gefunden";
        }

        lg
        Ludwig