Problem mit For Schleife

VillaiN

Grünschnabel
Ich lese aus einer MYSQL Tabelle Bilder aus. Die möchte ich nun anzeigen lassen, automatisch nach 4 Bildern soll er eine neue Zeile anfangen. Leider klappt das nicht so ganz und ich weiss momentan einfach nicht weiter.

Mein Code:
PHP:
$sql = "SELECT * FROM images";
$result = mysql_query($sql);

$imganz=11; // Anzahl der Bilder in der DB

while ($row = mysql_fetch_array ($result)){  
        
        for ($i=1;$i<=$imganz;$i++) {  
        $umbruchat = 4; // Anzahl nach der er neue Zeile anfangen soll

        echo "$row[0] "; // Ausgabe des Bildes
        if (($i % $umbruchat) == 0) { echo "<br>"; } // Neue Zeile anfangen 
        }
        
}

Wenn ich diesen Code so benutze bricht er zwar nach 4 Bildern ab, aber er tut es 11 mal (soviel Bilder wie in der DB sind). Lege ich die sql Abfrage + while in die For Schleife bricht er garnicht. Jemand eine Idee was ich falsch mache ?
 
Ist doch auch irgendwie logisch.

Die while Schleife wird so oft wiederholt wie Bilder in der Datenbank sind, dann machst du aber noch zusätzlich eine schleife die nochmals so oft wiederholt wird wie Bilder in der Datenbank sind.

Ich würde es mal so machen:

PHP:
$sql = "SELECT * FROM images"; 
$result = mysql_query($sql); 

/*
nachfolgende zeile macht keinen sinn... deswegen auskommentiert
wenn du die anzahl der Bilder in der Datenbank willst, geht das mit $imganz = mysql_num_rows( $result );
*/
//$imganz=11; // Anzahl der Bilder in der DB 

//folgende Zeile ausserhalb der Schleife, da sonst immer wieder neu gesetzt wird!
$umbruchat = 4; // Anzahl nach der er neue Zeile anfangen soll

while ($row = mysql_fetch_array ($result)){          
           
        echo $row[0] ."&nbsp;"; // Ausgabe des Bildes 
        if (($i % $umbruchat) == 0) { echo "<br>"; } // Neue Zeile anfangen          
         
}
 
Zuletzt bearbeitet:
$sql = "SELECT * FROM images";
$result = mysql_query($sql);

/*
nachfolgende zeile macht keinen sinn... deswegen auskommentiert
wenn du die anzahl der Bilder in der Datenbank willst, geht das mit $imganz = mysql_num_rows( $result );
*/
//$imganz=11; // Anzahl der Bilder in der DB

//folgende Zeile ausserhalb der Schleife, da sonst immer wieder neu gesetzt wird!
$umbruchat = 4; // Anzahl nach der er neue Zeile anfangen soll

while ($row = mysql_fetch_array ($result)){

echo $row[0] ."&nbsp;"; // Ausgabe des Bildes
if (($i % $umbruchat) == 0) { echo "<br>"; } // Neue Zeile anfangen

}

Ich möchte ja mal gerne wissen, wo du den $i herbekommst ;)

Also ich hätte es so gemacht:
PHP:
$umbruchat = 4; // Anzahl nach der er neue Zeile anfangen soll
for($i=1;$row = mysql_fetch_array ($result);$i++)
{         
  echo $row[0] ."&nbsp;"; // Ausgabe des Bildes
  if (($i % $umbruchat) == 0)
  {
    echo "<br>"; // Neue Zeile anfangen                  
  } 
}
 
wieder etwas dazugelernt... Dank an Lars, deine Scriptverbesserung hat mir sehr geholfen.

PS: Woher er $i bezieht möcht ich auch gern mal wissen ;)
 
Zurück