Array mit Dateiliste füllen und darin navigieren

  • Themenstarter Themenstarter pillefusss
  • Beginndatum Beginndatum
P

pillefusss

Hallo alle zusammen!

Folgendes Problem:
Ich habe eine Liste von Thumbnails. Wenn ich einen Thumbnail anklicke, öffnet das Bild in Originalgröße. Nun möchte ich aber durch links das nächste oder vorherige Bild in dem Verzeichnis auswählen können.
Wie kann ich das am elegantesten lösen? ICh vermute mit einem Array. Allerdings hab ich mich noch die mit Arrays beschäftigt und steh im Moment ein bisschen auf dem Schlauch.
Ansehen könnt ihr euch das Problem unter http://www.effello.com.

Vielen Dank schonmal für eure Hilfe.
 
Na das klingt doch nun nicht so schwer... Wenn du die Pfade zu deinen Bildern dann in einem Array vorliegen hast, brauchst du doch nur einen Link aus dem Element davor und danach generieren (sofern davor oder danach noch was kommt).

Die Doku liefert dir dazu eigentlich alles, was du wissen musst. Stichworte sind dann wohl count und array_search, das sollte für deine Anwendung schon reichen.

Ich nehm jetzt einfach an, dass deine Pfade letztendlich in einem solchen Array gelandet sind (wie auch immer):

Code:
$bild[0] = "bild1.jpg";
$bild[1] = "bild2.jpg";
$bild[2] = "bild3.jpg";
$bild[3] = "bild4.jpg";
...
Dann...

Code:
// bild3.jpg wird gerade angezeigt
// $aktuell = 'bild3.jpg';

$i = array_search($aktuell, $bild);          // $i = 2

if ($i > 0) {

    // es gibt noch ein Bild vor diesem, also
    // zurück-Link generieren mit diesem Bild:
    $prevImage = $bild[$i - 1];          // $prevImage = $bild[1]

}

if ($i < count($bild) - 1) {

    // es gibt ein Bild hinter dem aktuellen, also
    // vor-Link generieren mit diesem Bild:
    $nextImage = $bild[$i + 1];          // $prevImage = $bild[3]

}
 
Hiho!

Also, ich hab die Bilder noch nicht einmal in nem Array :)

Wie gesagt, ich hab echt keinen Plan von Arrays und ich müsste erstmal mit ner Schleife die Dateinamen in ein Array packen.
Der Rest ist dann kein Problem mehr.
Mir muss nur jemand sagen, wie ich hier
Code:
$handle = opendir("fotos/$ordner/thumbs/");
while($file = readdir($handle))
{
 if($file != "." && $file != "..")
  {
  }
}
closedir($handle);
ein Array gefüllt bekomme...

Klingt wahrscheinlich bei den meisten unheimlich dumm, aber ich steh heute echt auf'm Schlauch :)
 
Code:
while($file = readdir($handle))
{
 if($file != "." && $file != "..")
  {

      $bild[] = $file;

  }
}
closedir($handle);

Dann kommt oben genannte Konstellation raus. Denn gibst du keinen Key an, wird immer der nächste freie vergeben. Das erste Element wandert also in $bild[0], das zweite in $bild[1], etc.

Du musst allerdings aufpassen, dass noch keine Variable $bild existiert.



Und das wird vor dem Schlafengehen noch gelesen ;)
 
Zuletzt bearbeitet:
Schon passiert :)

Vielen Dank für die Hilfe, ich denke, das sollte klappen. Jetzt muss ich aber erstmal noch arbeiten :(
Werde das morgen umsetzen.

Wünsche noch en angenehme Nacht...
 
Guten morgen allerseit...
Hab das jetzt mal alles so gemacht wie oben beschrieben und hab sogar schon in der Doku gelesen, allerdings hab ich noch immer ein folgenschweres Problem :)

Ich blicke bei den arrays einfach nicht durch....

Bei den obigen Codeschnipseln steht ja folgendes:
Code:
if ($i > 0) {

    // es gibt noch ein Bild vor diesem, also
    // zurück-Link generieren mit diesem Bild:
    $prevImage = $gbild[$i - 1];          // $prevImage = $gbild[1]

}

Wenn ich mir jetzt mit
Code:
echo "$prevImage";
den Inhalt der Variable anzeigen lassen will, kommt nichts...

Ich befürchte es ist wieder nur ein Flüchtigkeitsfehler oder ähnliches, wäre aber trotzdem dankbar für schnelle, unkomplizierte Hilfe ;)
 
Alles klar... nach genauerem betrachten der Doku :) hats dann doch noch geklappt....
Vielen Dank für die Hilfe!
 
Du hast aber was vergessen...
Du musst allerdings aufpassen, dass noch keine Variable $bild existiert.
Bzw. bei dir nun $gbild... Das ist gar nicht so unwichtig bei deiner Einstellung von register_globals. Siehe hier.

Ok, auf der Seite geh ich nicht davon aus, dass irgendjemand auf so eine Idee kommt - und selbst wenn dürfte das doch eher unkritisch sein - man sollte aber mal drauf hingewiesen werden.
 
Zurück