Nächste Datei

oldputz1990

Erfahrenes Mitglied
Hallo!

Ich habe einen Ordern:

asdf.jpg
deds.jpg
zudk.jpg
ghsk.jpg
zhkd.jpg
qkyp.jpg

Nun gebe ich in das Adressfeld folgendes ein:
index.php?open=foto&bild=asdf.jpg

und das bild "asdf.jpg" wird geöffnet.

Nun möchte ich das "deds.jpg" Bild haben!

Jetzt zur wirklichen Frage:
wie kann ich einen Ordner auslesen, und den Namen des nächsten Bilder herausfinden?


Danke!
 
Schwer,

mein Tipp, nimm ne Datenbank und lass die Dateinamen speichern. Dann kannst du auch die Dateien per ID aufrufen.
Ist auch sicherer.
 
Arbeite statt mit dem Dateinamen lieber mit einer ID:

index.php?open=foto&bild=1
PHP:
<?php

/* glob() erzeugt einen numerischen Array mit allen Dateien im Ordner, du kannst auch die
 * Endung spezifizieren in dem du statt * einfach *.jpg schreibst */
$dir = "./images/";
$files = glob($dir."*");

/* Die ID wird aus der URL geholt und als Zahl erzwungen */
$id = intval($_GET['bild']);

/* Link fuer das naechste Bild */
$next = ( array_key_exists($id + 1, $files) === true ? '<a href="./index.php?open=foto&bild='.($id + 1).'">'.substr($files[($id + 1)], strlen($dir)).'</a>' : 'No next Pic' );

/* Link fuer das vorherige Bild */
$prev = ( array_key_Exists($id - 1, $files) === true ? '<a href="./index.php?open=foto&bild='.($id - 1).'">'.substr($files[($id - 1)], strlen($dir)).'</a>' : 'No previous Pic' );

/* Hier das Bild ausgeben */
print '<img src="'.$files[$id].'" /><br/>';
print $prev .' # '. $next;


?>

Falls du etwas nicht verstehst, erkläre ich es gerne ausführlicher.
 
Also, wenn dieses Script funktioniert, bist du mein Held *gg*


Habe es etwas umgeschrieben: (auf meine Bedürfnisse)

PHP:
/* glob() erzeugt einen numerischen Array mit allen Dateien im Ordner, du kannst auch die
 * Endung spezifizieren in dem du statt * einfach *.jpg schreibst */
$dir = "./fotoalbum/'.$album.'/big/";
$files = glob($dir."*");

/* Die ID wird aus der URL geholt und als Zahl erzwungen */
$id = intval($_GET['file']);

/* Link fuer das naechste Bild */
$next = ( array_key_exists($id + 1, $files) === true ? '<a href="./fotoalbum-'.$detail.'-'.$album.'-'.$seite.'-'.($id + 1).'.html">'.substr($files[($id + 1)], strlen($dir)).'</a>' : '<b>Keine Fotos mehr vorhanden!</b>' );

/* Link fuer das vorherige Bild */
$prev = ( array_key_Exists($id - 1, $files) === true ? '<a href="./fotoalbum-'.$detail.'-'.$album.'-'.$seite.'-'.($id - 1).'.html"">'.substr($files[($id - 1)], strlen($dir)).'</a>' : '<b>Kein vorheriges Bild vorhanden!</b>' );

/* Hier das Bild ausgeben */
print '<img src="./fotoalbum/'.$album.'/big/'.$files[$id].'" /><br/>';
print $prev .' # '. $next;

Entweder habe ich einen Fehler reingemacht, oder ?...


Fehlermeldung:

Notice: Undefined offset: 5 in C:\Programme\xampp\htdocs\uttx\_new_old_house\fotoalbum.php on line 1025

Zeile 1025:
PHP:
print '<img src="./fotoalbum/'.$album.'/big/'.$files[$id].'" /><br/>';


Danke!
 
PHP:
$dir = "./fotoalbum/'.$album.'/big/";

Sollte so aussehen:

PHP:
$dir = "./fotoalbum/$album/big/";

Die Fehlermeldung heißt, dass es keinen Eintrag mit der ID5 gibt.

Am besten baust du noch eine Prüfung ein:

PHP:
/* Falls das Bild existiert, hier das Bild ausgeben */
if(file_exists($dir.$files[$id]) === true) 
{
  print '<img src="'.dir$.$files[$id].'" /><br/>';
  print $prev .' # '. $next;
}
else
{
  print 'Bild existiert nicht';
}

Probier es mal so.
 
Zurück