PHP Galerie mit For Schleife

HI,
ich sitze jetzt schon etwas länger an einer Galerie, die
ich eigentlich mit einer For-schleife in PHP realisieren wollte.
Aber ich habe mit For-Schleifen noch nicht so viel Erfahrung und komme deswegen auch nicht weiter.

Also folgendes In einer anderen Datei Lädt man Dateien hoch, der Name dieser Datei, und ob diese Datei in die Galerie aufgenommen werden sollen, werden in der Datenbank data gespeichert.

Nun wollte ich eigentlich alle Einträge Ausgeben lassen die in der Spalte Galerie -> Ja stehen haben,
aber mit der For-Schleife ,sodass immer 4 Bilder nebeneinander und dann immer eine neue Reihe genommen wird

Ich habe das Bisher so versucht:
?php
include(‚db.php‘);
//select
$select = mysql_query(„SELECT * FROM data WHERE Galerie = ‚Ja‘“) or die („Es gab einen Fehler in der Zeile 4“);
//count
while($select1=mysql_fetch_array($select))
{
$data = $select1[‚Datei‘];
}
$num = mysql_num_rows($select);
$zahl = ceil($num / 3);

for($i = 1; $i ‚;
echo $i * $j -1;
}
echo‘
';
}
?>

Ich danke schon einmal im Voraus für die hilfreichen Antworten

hallo

dazu brauchst du keine foreach-schleife. du kannst das ganze so lösen:

<?php include('db.php');
//select $select = mysql\_query("SELECT \* FROM `data` WHERE `Galerie` = 'Ja'") or die ("Es gab einen Fehler in der Zeile 4"); for($i=0; $row=mysql\_fetch\_assoc($select); $i++) { if($i%4==0 && $i!=0) echo " "; echo ""; } das funktioniert folgendermaßen: er gibt ein bild nach dem anderen aus. wenn $i (das hochgezählt wird) ohne rest durch 4 teilbar ist UND nicht 0 ist, macht er einen Zeilenumbruch -\> also immer nach 4 Bildern. Desweiteren benutze ich mysql\_fetch\_assoc. Dann enthält die Ergebniszeile ($row) ein assoziatives array (also mit spaltenname als schlüssel). das finde ich schöner, da man den sql-query verändernh kann ohne nebenwirkungen auf die auswertung vom ergebnis hoffe das hilft (hab den code ausm kopf geschrieben, also ohne gewähr, dass er auf anhieb funktioniert)

Sorry, aber mir Deiner Problemstellung kann ich gar nichts anfangen…

HI,
ich sitze jetzt schon etwas länger an einer Galerie, die
ich eigentlich mit einer For-schleife in PHP realisieren
wollte.

Sorry, bin kein PHP Experte. Wünsche trotzdem viel Erfolg.

Hi,

okay, ich bin mir nicht so sicher, ob ich verstanden habe was du machen willst. Wenn es dir nur darum geht vier Bilder nebeneinander zu stellen würde ich das wie folgt machen:

<?php include('db.php');
//select $select = mysql\_query("SELECT \* FROM `data` WHERE `Galerie` = 'Ja'") or die ("Es gab einen Fehler in der Zeile 4"); //count $counter = 0; // Dummy-Zähler $newline = 4; // Anzahl der Bilder in einer Reihe while($select1=mysql\_fetch\_array($select)) { echo ' ![](http://xyz.de'.$select1['Datei'].')'; if($counter++%$newline == 0) { echo ' '; } } $num = mysql\_num\_rows($select); $zahl = ceil($num / 3); ?\> Wenn du für was anderes noch dein $data-Array brauchst auch so wie vorher bauen und das Ganze dann einfach mit einer foreach-Schleife durch gehen: $counter = 0; // Dummy-Zähler $newline = 4; // Anzahl der Bilder in einer Reihe foreach($data AS $key =\> $image) { echo ''; if($counter++%$newline == 0) { echo ' '; } } Hoffe das hilft dir weiter! Viele Grüße Christoph

Hallo,

der Ansatz erscheint mir unnötig kompliziert, insbesondere diese Doppelnummerierung $i, $j funktioniert so nicht: Mit deinem Code sind das dritte Bild in der zweiten Zeile und das zweite Bild in der dritten Zeile gleich: 3*2-1=5=2*3-1.
Wenn du bei for-Schleifen bleiben willst, müsstest du den Index des $data-Arrays modifizieren in $data[($i-1)*3)+($j-1)] - vorausgesetzt, du willst 3 Bilder pro Zeile haben. Warum lässt du die erste for-Schleife eigentlich bis 2 laufen und nicht bis $zahl?

Da die äußere for-Schleife nicht mehr tut als
auszugeben, könnte man den Code deutlich vereinfachen:
for($i=1,$i’;
if($i%3==0) echo ’
';
}

Dabei habe ich den Modulus-Operator „%“ verwendet (s. http://php.net/manual/en/language.operators.arithmet…), der den Rest der Division ausgibt. Der untersuchte Ausdruck ist also wahr für i=0,3,6,9,… und gibt dir so nach je 3 Bildern einen Zeilenumbruch.

Viele Grüße
Alex

Viel zu umständlich und auch ohne For lösbar , und zudem sieht deine zusammenstellen ziemlich kreutz und quer zusammen gewürfelt aus.

Sowas kannst direkt mit der while abfrage realisieren du zählst es praktich mit jeder abfrage aus der datenbank wenn deine zahl 4 erreicht ist fügst du ein break ein. Das sollte dann in etwa so ausehn.

<?php include('db.php');
$sql = "SELECT \* FROM `data` WHERE `Galerie` = 'Ja'"; $result = mysql\_query($sql) OR die(mysql\_error()); $i = 1; while($row = mysql\_fetch\_assoc($result)) { echo '[http://xyz.de/'.$row['datei'].'  ](http://xyz.de/'.%24row%5B'datei'%5D.'%C2%A0%C2%A0)'; echo ($i % 4 == 0) ? " \n" : ""; $i++; } ?\> MFG Sven

Danke für die VIELEN und schnellen Antworten.
Sie waren alle sehr hilfreich, werde sie dann auch ausprobieren danke

Danke habe jetzt deine Version genommen, vielen Dank für deine eure Hilfe, danke sehr