• Aktualisierte Forenregeln

    Eine kleine Änderung hat es im Bereich Forenregeln unter Abschnitt 2 gegeben, wo wir nun explizit darauf verweisen, dass Forenkommentare in unserer Heftrubrik Leserbriefe landen können.

    Forenregeln


    Vielen Dank

array ende bei einer php-bildergallery

Biloboy

Anfänger/in
Mitglied seit
02.10.2001
Beiträge
53
Reaktionspunkte
2
Ich programmiere momentan eine Bildergallery in PHP.
Das ganze ist in diesem Prinzip aufgebaut: Zuerst gelangt man auf eine Galleryübersicht mit den verkleinerten Fotos. Klickt man ein solches an öffnet sich das dazugehörige grosse Foto im gleichen Fenster. Unter dem Foto gibt es einen next-, prev-, und Back to Gallery Button.
Diese Funktionen funktionieren auch alle, ausser, dass man unendlich lang den next- bzw. prev- Button klicken kann und es im Array immer noch eines dazuzählt. Dies hat zu Folge das am Ende der Gallery einfach keine Fotos mehr angezeigt werden und statt dessen das "Bild nicht gefunden"-Symbol angezeigt wird.

Ich würde jetzt aber gerne eine Funktion einbauen, welche es möglich macht, dass beim ersten Foto im Array der prev-Button weggelassen wird und beim letzten Foto der next-Button...

Hier noch die Codes:

gallery.php
---------------
<?php
echo "<script type=\"text/javascript\">\n";
echo "function NewWindow (Adresse) {\n";
echo " Fenster1 = window.open(Adresse, \"Zweitfenster\", \"width=600,height=600,left=100,top=200\");\n";
echo " Fenster1.focus();\n";
echo "}\n";
echo "</script>\n";
include("functions/check_thumb.php");
$files = $thumbs = array(); /* 2 Arrays werden erstellt */
$path = "images/fotoalbum";
$verzeichnis = @opendir($path);
if(!$verzeichnis) die ("Kann Verzeichnis $path nicht öffnen");
rewinddir($verzeichnis);
while($file = readdir($verzeichnis)) {
if($file != "." and $file != "..") {
array_push($files, "$file");
}
}
sort($files);
$imgnr = 0;
foreach($files as $file) {
$thumbfile = "upload/thumbfiles/$file.thumb";
check_thumb("$path/$file", $thumbfile);
echo "<a method=\"GET\" name=\"thumbnail\" href='thumbnail.php?imgnr=$imgnr'>\n";
echo "<img src=\"$thumbfile\"></a>\n";
$imgnr++;
}
?>


thumbnail.php
--------------------
<?php
include("functions/check_thumb.php");
$files = $thumbs = array(); /* 2 Arrays werden erstellt */
$path = "images/fotoalbum";
$verzeichnis = @opendir($path);
$imgnr = $_GET['imgnr'];
if(!$verzeichnis) die ("Kann Verzeichnis $path nicht öffnen");
rewinddir($verzeichnis);
while($file = readdir($verzeichnis)) {
if($file != "." and $file != "..") {
array_push($files, "$file");
}
}
sort($files);
echo "<html>\n";
echo " <head>";
echo " <title>Gallery</title>\n";
echo " </head>\n";
echo " <body>\n";
echo " <p align=\"center\"><img src=\"$path/",$files[$imgnr],"\"></p>\n";
echo " <p align=\"center\">&copy The Riot Plugs</p>\n";
print_r(array_search($thumbnail,$files));
echo "<p align=\"center\">\n";
if($imgnr =
echo "<a method=\"GET\" name=\"thumbnail\" href='thumbnail.php?imgnr=",$imgnr-1,"'>prev</a>&nbsp\n";
echo "<a href=\"gallery.php\">Gallery</a>&nbsp\n";
echo "<a method=\"GET\" name=\"thumbnail\" href='thumbnail.php?imgnr=",$imgnr+1,"'>next</a>\n";
echo "</p>";
echo " </body>\n";
echo "</html>\n";
?>


umwandeln.php:
----------------------
<?php
include("functions/check_thumb.php"); /* Die Quintessenz aus "Bilder und Thumbnails" als Funktion */

$files = array();

$path = "images/fotoalbum";

$verzeichnis = @opendir($path); /* öffnet das Verzeichnis (@ unterdrückt Fehlermeldung) */
if (!$verzeichnis) die ("Kann Verzeichnis $path nicht öffnen");

rewinddir($verzeichnis); /* setzt den Verzeichnis-Zeiger auf die erste Datei */
while($file = readdir($verzeichnis)) { /* durchläuft alle Dateien im Verzeichnis */
if($file != "." and $file != "..") {
array_push($files, "$file"); /* Dateien werden in das Array $files gespeichert */
}
}
sort($files); /* soriert, weil das durch readdir() nicht immer gewährleistet ist */

foreach($files as $file) {
if(check_thumb("$path/$file", "upload/thumbfiles/$file.thumb")) { /* includet Funktion, legt Thumbs an,
wenn sie noch nicht existieren */
echo "Thumbfile für $file neu gemacht <br />\n"; /* die Funktion gibt "true" zurück
wenn neu erstellt */
}
else echo "Thumbfile für $file gabs schon<br />\n"; /* "false für Thumb gabs schon */
}
echo "fertig";
?>



Kann mir jemand helfen???
 
Ohne mir den Quelltext genauer durch zu lesen, du bruachst doch nur beim anzeigen der next und prev Buttons zu prüfen ob du am Anfang oder am Ende vom Array bist also Array[0]=Anfang und Array.legth()=Ende! wenn nich dan zeig die Buttons an :-D
 
mario-naether am 14.09.2006 13:11 schrieb:
Ohne mir den Quelltext genauer durch zu lesen, du bruachst doch nur beim anzeigen der next und prev Buttons zu prüfen ob du am Anfang oder am Ende vom Array bist also Array[0]=Anfang und Array.legth()=Ende! wenn nich dan zeig die Buttons an :-D

Ok, habe jetzt eine Schlaufe gemacht die, wenn die Variable, welche die Arraynr. enthält, auf 0 gesetzt ist, nur den next-Button anzeigt. Insgesamt sieht die Schleife dann so aus:

if($imgnr == 0) {
Anzeige nur mit next-Button
}
elseif(array(legth)) {
Anzeige nur mit back-Button
}
else {
Anzeige mit beiden Buttons
}

Das Problem ist, dass die erste if-Bêdingung zwar stimmt, jedoch beim nächsten Bild (egal ob noch weitere folgen würden) schon die array(legth) variante ausgewählt wird.
 
Zurück