[PHP] Schleifen Problem mit Ausgabe

djjlx

---???---
ID: 62937
L
9 Mai 2006
599
21
Hallo!


Ich hab ein Problem mit einer "while"Schleife.

Ich möchte aus eine db bild- und zielurl auslesen und ausgeben lassen

Ausgabe sollte eine Tabelle mit je 4 Spalten pro Zeile haben.

bis jetzt hab ich so
PHP:
echo"<table width=\"96%\"  border=\"0\">";

$res = mysql_query("SELECT * FROM xxx LIMIT 4");
      while ($data = mysql_fetch_array($res))
	  {
        $name = $data["name"];
        $burl = $data["burl"];
        $zurl = $data["zurl"];
        $text= $data["verg"];
        echo"
          <td>
          $name<br>
          <a href='$zurl' target='_blank'><img src='$burl' alt='$name' border='0'></a><br>
          $text
          </td>";
      }

Natürlich werden jetzt nur 4 Ergebnisse ausgegeben (LIMIT 4)
Hab jetzt versuchte diese Schleife in eine weiter Schleife zu geben damit die Ganze Db ausgelesen wird und jede Zeile nur 4 Ergebnisse hat.

Geht natürlich nicht steh jetzt irgendwie auf der Leitung und hab wahrscheinlich einen denkfehler :ugly:

Kann mir jemand sagen wo mein Fehler liegt ?
LG
 
Für jede Zeile eine neue Datenbankanfrage? Die arme Datenbank!:ugly:

Du kannst pro Bild eine Variable hoch zählen und die nimmst du Modulo der Anzahl der Bilder pro Zeile.

Die Variante mit LIMIT würde trotzdem funktionieren nur braucht man dafür den 2. Parameter also für die erste Zeile wäre es dann LIMIT 0, 4 für die Zweite LIMIT 3, 4 usw.

PHP:
echo"<table width=\"96%\"  border=\"0\">
 <tr>";
$res = mysql_query("SELECT * FROM xxx");
$i=0;
while ($data = mysql_fetch_object($res))
{
 echo"
<td>".
  $data->name."<br>
  <a href=\".$data->zurl."\" target=\"_blank\">
   <img src=\"".$data->burl."\" alt=\"".$data->name."\" border=\"0\">
  </a>
  <br>
  ".$data->verg."
 </td>";
 if(($i++)%4==0)
  echo "</tr><tr>";
 }
echo "</tr></table>";
 
Zuletzt bearbeitet:
Hy!

Danke vielmals!

Hab den Code noch nicht ganz durchschaut aber funktioniert einwandfrei

Danke!

LG
 
Kleiner Verbesserungsvorschlag:

Ich würde diesen Teil hier:

PHP:
if(($i++)%4==0)
  echo "</tr><tr>";
 }

ganz an den Anfang der while-Schleife setzen, also als erste Anweisung innerhalb des Blocks.

Warum? Wenn die Gesamt-Anzahl der Bilder genau durch vier teilbar ist, wird sonst ganz unten noch eine leere Zeile erzeugt. Das ist zwar nicht unbedingt falsch, aber unnötig und je nach Design möglicherweise auch optisch störend.