PHP Vor- und zurück Blätterfunktion ohne DB

Tab

unlimited
ID: 374854
L
26 Juni 2007
900
71
Guten Tag liebe Klammgemeinde,

ich habe mir ein einfaches Galeriescript erstellt. Hierbei werden die Bilderdateien aus einem Ordner herausgesucht und auf der Seite ausgegeben. Funktioniert einwandfrei.

Ausgabe der Thumbnailansicht.
PHP:
<?php


include_once("fileadmin/gallery/ball/thumbnail.php");

$picture = "galerie/".$_GET['img'];

/* Maximale Bilderanzahl */
$maxPictures = 20;
/* Anzahl der Bilder nebeneinander */
$nextPictures = 5;
/* Pfad zu den Bildern */
$pathPictures = "fileadmin/gallery/ball/galerie/";
/* Datei Array */
$data = array();

/* Verzeichnis öffnen*/
$dir = opendir($pathPictures);

while (($read = readdir($dir)) !== false) {
        
    if ($read != "." && $read != ".." && $read != "Thumbs.db") {
            
        array_push($data,$read);
        
    }
}

$pictureCount = count($data);


?>


<table style="border: 1px solid #FFFDF9;">
<tr>

<?php
$i = 0;
foreach ($data as $pictures) {
    
    if($i%$nextPictures != 0) {
    
    echo "<td style='border: 1px solid #FFFDF9;'><a href='index.php?id=50&img=".$pictures."' name='$pictures'><img src='fileadmin/gallery/ball/thumbnail.php?img=".$pictures."'></a></td>";
    
    } else {
        echo "</tr><tr><td style='border: 1px solid #FFFDF9;'><a href='index.php?id=50&img=".$pictures."' name='$pictures'><img src='fileadmin/gallery/ball/thumbnail.php?img=".$pictures."'></a></td>";
    }
    
    $i++;
}

//echo $data[1];
?>

</tr>
</table>
In der nächsten Datei wird das Bild in einem größeren Format angezeigt. Ganz simpel aufgebaut. Es gibt hier ein Zurückbutton, mit dem man dann zum Thumbnail zurück kommt.

Einzelansicht
PHP:
<center>
        <img src="fileadmin/gallery/ball/galerie/<?php echo $_GET['img']; ?>" /><br />
        <a href="index.php?id=ball#<?php echo $_GET['img']; ?>">Zurück</a>
</center>
Mein Problem

Ich würde nun gerne auf der Seite mit der Einzelansicht einen "Vor- und Zurückbutton" einrichten. Doch stehe ich momentan auf dem Schlauch wie ich das realisieren kann. Ich müsste ja irgendwie zuerst die Daten von der Thumbnailansicht auf die Einzelansicht übertragen und dann aus dem array() die Daten vorher und nacher bekommen.

Liebe Grüße
 
Ich müsste ja irgendwie zuerst die Daten von der Thumbnailansicht auf die Einzelansicht übertragen und dann aus dem array() die Daten vorher und nacher bekommen.
Liebe Grüße

Dir wird wohl nicht viel anderes übrig bleiben, als in der Einzelansicht nochmals den Ordner zu scannen und dir die Dateinamen des nächsten und vorherigen Bildes zu merken (danach kannst du ja abbrechen lassen).
Wobei du hier nicht unbedingt mit einem Array arbeiten musst, sondern du kannst ja die Werte direkt speichern.

Beispiel:
PHP:
$dir = opendir($pathPictures);
$previmg = NULL;
$nextimg = NULL;
$found = false;
while (($read = readdir($dir)) !== false) {
    if ($read != "." && $read != ".." && $read != "Thumbs.db") {
        if($found){ //nächstes Bild erreicht
             $nextimg = $read; //Dateiname speichern
             break; //Schleife kann abgebrochen werden
        }
        if($read == $_GET['img']) { //aktuelles Bild erreicht
             $found = true;
        } else {
            $previmg = $read; //Vorheriges Bild wird so lange überschrieben, bis aktuelles Bild erreicht
        }
    }
}

Alternativ könntest du dein $data-array einmal bauen lassen und serialisiert in eine Datei schreiben. Dann müsstest du nicht mehr jedes mal alle Dateien durchgehen, sondern nur noch die Datei auslesen und den String darin wieder deserialisieren um an dein Array zu kommen, mit dem du dann bequem arbeiten kannst.
Ob das allerdings wesentlich performanter ist müsstest du testen.

Edit:
Eine weitere Möglichkeit, die mir gerade eingefallen ist, ist dass du per GET zusätzlich noch den vorherigen und nächsten Dateinamen übergibst. Das ist zwar nicht sehr schön, dürfte aber die performanteste Lösung sein, da du dann in der Einzelansicht keine aufwändigen Dinge tun musst, sondern einfach auf die Variablen zugreifen kannst.

Gruß
Claudi
 
Zuletzt bearbeitet:
Hallo Claudi,

deine letzte Möglichkeit wird nicht funktionieren, da ich zwar vom einen Bild zum nächsten bzw. zum Vorherigen komme, jedoch dann keine GET-Parameter mehr für weiteres Vor- und Züruckgehen habe.

Die anderen Möglichkeiten werde ich gleich mal durchgehen. Schonmal vielen Dank!
 
Da hast Du Claudi falsch verstanden.
Du hast jedes Mal die Daten vorliegen und ersetzt ja so die vor und rückblätter Werte !
 
Um wieviel Bilder handelt es sich denn? Das passt doch bestimmt auch in die Session oder spricht da was gegen? Dann könntest Du ganz einfach mit den Indizes arbeiten...
 
Da hast Du Claudi falsch verstanden.
Du hast jedes Mal die Daten vorliegen und ersetzt ja so die vor und rückblätter Werte !

Nein, er hat mich richtig verstanden, ich hatte genau den von ihm angesprochenen Denkfehler gemacht.

Denn es ging ja darum, dass man die Dateinamen per GET übergeben kann und somit eben in der Einzelbildansicht nicht mehr den Ordner durchgehen muss. Aber mit der Methode funktioniert das Blättern dann halt nur genau einmal.

Aber die beiden anderen Möglichkeiten sollten klappen, oder der Ansatz von tleilax ;)