Bilder auflisten in Tabelle

Hallöle.
Ich hab mich immer um das Problem rumgewurschtelt, aber jetzt wird blöd :wink:
Ich würd gern über PHP viele Bilder auflisten.
Und zwar folgendermaßen:
Bild_1______________Bild_2______________Bild_3
Beschreibung_1______Beschreibung_2______Beschreibung_3

Bild_4______________Bild_5______________Bild_6
Beschreibung_4______Beschreibung_5______Beschreibung_6

usw.

Also in einer Tabelle immer drei Bilder nacheinander, neue Zeile, wieder drei nacheinander usw.
Die Bilder sollen alle aus einem Verzeichniss ausgelesen werden.
Liegt in der Form vor:
bild.jpg -> Bild
bild.txt -> Bildbeschreibung

Kann mir einer von euch nen Tipp geben?

Hi Lukas,

wie ausführlich brauchst du den die Tipps bzw. ist dein Vorwissen?

Also Verzeichniss lesen geht mit scandir()
prüfen ob es sich um eine Datei handelt kannst du mit is_file()
du musst aber darauf achten, das sowohl „.“ als auch „…“ aus dem Verzeichnissbau als Dateien gewertet werden.

Zum Ausgeben, iterirst du durch das Ergebnisarray von scandir() und zeigst die Bilder an.

Empfehlenswert wäre die Verwendung eines Templates zur Ansicht also einer HTML-Datei, die den Rumpf (z.B. Tabelle oder div’s) und Platzhalter wie z.B. für die Bilder hat. Diese kannst du dann mit substr() durch die Dateinamen der Bilder ersetzen.

Sag bescheid ob dir die Info reicht.

Gruß Michi

Danke. Mir gehts aber eigentlich darum, wie ich die Bilder in einer mehrspaltigen Tabelle anzeigen kann.
Derzeit werden alle untereinander angezeigt.
Aber auf jeden Fall Danke für den Tipp mit is_file :smile:

Aha, also einfach mit HTML-Tabellen würd ich sagen

den Teil der mit beginnt und mit endet wiederholst du einfach so lange, bis alle Bilder angezeigt werden.

Gruß Michi

naja… so in etwa…

$j = 0
echo „“;
for ($i = 1; $i";
}
echo „$bild[$i]
$title[$i]“;
}
echo "

Sieht gar nicht schlecht aus, aber achte darauf, dass ein Array immer mit dem Index 0 beginnt also sollte die for-Schleife so aussehen

for ($i = 0; $i 

die Letzte Zeile solltes du noch durch


    
     while ($j ";
     $j++;
     }
     echo "";




ersetzen, damit die Tabelle auch sauber geschlossen wird.

Also alles zusammen sollte dann etwa so aussehen



    
    $j = 0;
    echo "

";
for ($i = 0; $i ";
}
echo „$bild[$i]
$title[$i]“;
}
while ($j ";
$j++;
}
echo „“;

und achte auch immer darauf, dass du die abschliessenden Semikolons (:wink: setzt. Die haben bei deinem posting in manchen Zeilen gefehlt. Das kann unliebsame Überaschungen bringen.

Gruß Michi

Ich erweitere euer Werk um eine Codeeinsparung und schnelle Anpassbarkeit

$bpr = 3; // Bilder pro Reihe

echo "

";
for ($i = 0; $i ";

echo "
$title[$i]";
}

// $i ist jetzt = $anzahl_bilder
echo str_repeat("", ($bpr-$anzahl_bilder%$bpr));

echo „“;

Wenn du eine genau passende Bildanzahl hast (zum Beispiel 21 bei 3 Bildern pro Reihe) dann erhält deine Tabelle mit diesem Ansatz eine Leerzeile am Ende. Wenn dich das stört, musst du’s komplizierter machen:

$bpr = 3; // Bilder pro Reihe
$i = 0;

echo "

„;
while($i“;

echo "
$title[$i]";
$i++;

if ($i%$bpr == 0)
echo „“;
}

if($i%$bpr != 0)
echo str_repeat("", ($bpr-$i%$bpr)) . „“;

echo „“;

Meine Vorredner hätten das genauso gekonnt und ich will nicht den Klugscheisser spielen, ich hatte nur gerade lust auf’s programmieren.

Nicht übel nehmen bitte