Hallo Forum.
Bin gerade dabei, eine Galerie per php zu erstellen.
Sie funktioniert nach folgendem Prinzip:
1. Es wird ein query $dir übergeben, der den Ordner, in der die anzuzeigenden Bilder sind, kennzeichnet.
Also: http://localhost/blabla/index.php?dir=../galerie1/
2. Es wird der Inhalt des übergebenen Ordners mittels scandir() ermittelt. Die ersten zwei Elemente ("." und "..") werden per array_shift() gelöscht. Somit habe ich nur die Dateinamen im Array
3. Es wird per echo() ein tabelle eingeleitet
4. Mit foreach() wird jedes Element des arrays mit <img> so verknüpft, dass dann folgender HTML-Code entsteht:
foreach($files as $bild){
$bild="<img src="".$dir.$bild."">";
=> <img src="galerie1/image001.jpg">
5. In der foreach-Schleife gibt es eine for()-Schleife, die nach 4 Bildern eine neue <tr> anfängt (davor natürlich die aktuelle <tr> schließt).
Und hier ist das Problem: In der ersten Zeile sind 5 statt 4 Bilder. Aber in allen restlichen sind es vier.
Und es wird immer nur image001.jpg geladen, aber keine fortlaufende Bilder (alle bilder sind im Format image###.jpg gespeichert).
Ich gebe euch am besten mal den Quelltext, damit ihr mein Problem besser versteht:
_____________________________________________________________________
<?php
// Prüfen, ob Parameter ein Ordner ist
if(is_dir($dir)){
// Alle Dateinamen in Array lesen,
// erste zwei Elemente ("." und "..") werden gelöscht
$files = scandir($dir);
for($i=0;$i<2;$i++){
array_shift($files);
}
// Tabelle ausgeben
echo "<table width="100%" border="1">";
foreach($files as $bild){
// So bearbeiten, dass HTML-Code daraus entsteht
$bild="<img src="".$dir.$bild."">";
// Dann ausgeben
echo "\n";
echo "<tr>";
echo "\n";
for($i=0;i<4;$i++){
echo "<td>";
echo $bild;
echo "</td>";
echo "\n";
if($i==4){
echo "</tr>";
echo "\n";
echo "<tr>";
echo "\n";
$i=0;
}
}
}
// Tabelle beenden
echo "</table>\n";
}
// Wenn Parameter keine Galerie ist, Meldung ausgeben und sterben
else{
die("Galerie nicht gefunden!");
}
?>
_____________________________________________________________________
Vielen Dank für die Zeit.
euer hans