ERLEDIGT
JA
JA
ANTWORTEN
6
6
ZUGRIFFE
385
385
EMPFEHLEN
-
Hi, ich habe mir ein kleines Gallery Script geschrieben. Nun habe ich ein Problem mit der Blätterfunktion.
Das Script gal.php sieht so aus:
PHP-Code:error_reporting(E_ALL);
function show_thumbnail($file) {
if(is_file($file)) {
$max = 160; // Max. thumbnail width and height
$size = getimagesize($file);
if ( $size[0] <= $max && $size[1] <= $max ) {
$ret = '<img src="'.$file.'" '.$size[3].' border="0">';
}
else {
$k = ( $size[0] >= $size[1] ) ? $size[0] / $max : $size[1] / $max;
$ret = '<a href="javascript:;" onClick="window.open(\'image.php?img=';
$ret .= $file.'\',\'\',\'width='.$size[0];
$ret .= ',height='.$size[1].'\')">';
$ret .= '<img src="'.$file.'" width="'.floor($size[0]/$k).'" height="'.floor($size[1]/$k).'" border="0" alt="View full-size image"></a>';
}
return $ret;
}
}
// Verzeichnisnamen lesen
$mydirs = getcwd()."/img";
$verzs = dir($mydirs);
while($entrys=$verzs->read()){
if($entrys != "." && $entrys != ".."){
$ordner[] = $entrys;
}
}
$verzs->close();
// Ausgabe der Verzeichnisnamen verlinkt zu den Gallerien
rsort($ordner);
while(list($key, $val) = each($ordner)) {
$datei = ("img/".$val."/gallery.txt");
$data = file($datei);
foreach($data as $titel) {
echo "<a href=\"gal.php?gallery=".$val."&seite=1\">".$val."</a> ".$titel."<br />\n";
}
}
if(isset($_GET['gallery'])) {
// Gallerie Verzeichnis auslesen (Bilder)
$mydir = getcwd()."/img/".$_GET['gallery']."";
$verz = dir($mydir);
while(false !== $entry = $verz -> read()){
if($entry != "." && $entry != ".." && $entry != "gallery.txt"){
$dateinamen[] = $entry;
}
}
$verz->close();
//Ausgabe der Bilder (Blätterfunktion)
rsort($dateinamen);
echo "<div style=\"width:620px;\">\n";
$seite = $_GET['seite'];
if(!isset($seite)) {
$seite = 1;
}
$max_eintraege = 9;
$start = $seite * $max_eintraege - $max_eintraege;
$eintraege = count($dateinamen);
$max_seite = $eintraege / $max_eintraege;
echo "<br />Anzahl der Bilder in dieser Gallerie: ".$eintraege."<br /><br />\n";
for($i = 0; $i < $max_eintraege; $i++) {
if(file_exists("img/".$_GET['gallery']."/".$dateinamen[$i])) {
if(substr($dateinamen[$i], -4) == ".jpg") {
echo show_thumbnail("img/".$_GET['gallery']."/".$dateinamen[$i+$start]."")."\n";
}
}
}
echo "<br />";
# Ausgabe der Seiten Links
if($max_eintraege < $eintraege) {
for($a=0; $a < $max_seite; $a++) {
$b = $a+1;
if($seite == $b) {
echo " <b>$b</b> ";
} else {
echo "<a href=\"?gallery=".$_GET['gallery']."&seite=".$b."\">$b</a>\n";
}
}
}
echo "</div>";
}
Das Script ist ein wenig kommentiert. Erst werden die Verzeichnisse ausgelesen. Im Ordner img befinden sich die einzelnen Gallerien, benannt nach dem Schema "Gallery1, Gallery2, Gallery3, usw.". Diese werden dann verlinkt.
Dann werden thumbnails angezeigt, hier im Beispiel immer neun Stück auf einer Seite.
Jetzt zum Problem. Habe ich z.B. 11 Bilder in dem Ordner Gallery1, werden also zwei Seiten angelegt, eine auf der neun Bilder angezeigt werden, auf Seite 2 dann nochmals zwei weitere Bilder.
Dann bekomme ich diese Fehlermeldungen:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13
[B]Notice[/B]: Undefined offset: 11 in [B]C:\Programme\Apache2\htdocs\webprojects\Uebungen\gallery\gal.php[/B] on line [B]99[/B] [B]Notice[/B]: Undefined offset: 12 in [B]C:\Programme\Apache2\htdocs\webprojects\Uebungen\gallery\gal.php[/B] on line [B]99[/B] [B]Notice[/B]: Undefined offset: 13 in [B]C:\Programme\Apache2\htdocs\webprojects\Uebungen\gallery\gal.php[/B] on line [B]99[/B] [B]Notice[/B]: Undefined offset: 14 in [B]C:\Programme\Apache2\htdocs\webprojects\Uebungen\gallery\gal.php[/B] on line [B]99[/B] [B]Notice[/B]: Undefined offset: 15 in [B]C:\Programme\Apache2\htdocs\webprojects\Uebungen\gallery\gal.php[/B] on line [B]99[/B] [B]Notice[/B]: Undefined offset: 16 in [B]C:\Programme\Apache2\htdocs\webprojects\Uebungen\gallery\gal.php[/B] on line [B]99[/B] [B]Notice[/B]: Undefined offset: 17 in [B]C:\Programme\Apache2\htdocs\webprojects\Uebungen\gallery\gal.php[/B] on line [B]99[/B]
Nehme ich das error_reporting(E_ALL) raus, werden diese nicht mehr angezeigt, aber das ist ja nicht die Lösung. Weiß wer was da falsch läuft? Wäre sehr dankbar wenn sich das mal jemand ansehen könnte.
Ich hänge das ganze auch nochmal an. Einfach die gal.php aufrufen.
Vielen Dank. Grüße
-
Wenn du nicht sicher sein kannst, ob ein Element eines Arrays existiert, solltest du dies vor dessen Zugriff/Verarbeitung prüfen. Ein Beispiel:
PHP-Code:if( isset($array['key']) ) {
echo '$array["key"] existiert und hat den Wert: '.var_export($array['key'], true);
}
Markus Wulftange
-
Danke für die schnelle Antwort. So ähnlich habe ich mir das auch schon gedacht. Allerdings scheitere ich an der Umsetzung. Ich dachte es reicht aus mit file_exists zu überprüfen ob die Datei überhaupt vorhanden ist.
Ich habe auch schon anderes versucht wie z.B.
PHP-Code:for($i = 0; $i < $max_eintraege; $i++) {
if(isset($dateinamen[$i])) {
if(file_exists("img/".$_GET['gallery']."/".$dateinamen[$i])) {
if(substr($dateinamen[$i], -4) == ".jpg") {
echo show_thumbnail("img/".$_GET['gallery']."/".$dateinamen[$i+$start]."")."\n";
}
}
}
}
Also zusätzlich mit:PHP-Code:if(isset($dateinamen[$i]))
Der Fehler ist allerdings trotzdem noch vorhanden. Wo muss ich denn auf die existenz des array Elementes überprüfen? Danke. Gruß
-
Ist das denn die erwähnte Zeile? Ich denke, der Fehler wird eher in der Zeile mit folgender Anweisung zu suchen sein:
PHP-Code:echo show_thumbnail("img/".$_GET['gallery']."/".$dateinamen[$i+$start]."")."\n";
Markus Wulftange
-
Ja klar, das ist die Zeile in der der Fehler sitzt. Aber kann ich in der Zeile selbst irgendwie darauf überprüfen? Ich dachte es reicht wenn ich vor der Zeile mit der Ausgabe auf die existenz des Elementes überprüfe. Aber ich kenne mich da einfach auch nicht so gut aus. Ich habe bevor ich gepostet habe wirklich haufenweise Versuche durchgearbeitet. Der Fehler liegt ganz genau hier oder?
Die Schleife wird immer neun mal durchlaufen und $i + 1 erhöht, auf Seite zwei sind jetzt aber z.B. nur zwei Bilder und da entsteht der Fehler, oder?PHP-Code:$dateinamen[$i+$start]
Aber ich weiß es einfach echt nicht zu lösen? Noch ein Tipp vielleicht bitte?
-
Du prüfst nur, ob die Variable $dateinamen[$i] und eine Datei mit entsprechendem Wert als Teil des Dateinamen existiert. Die Existenz der Variable $dateiname[$i+$start] wird aber nicht geprüft. Und genau dort scheint der Fehler zu sein.
Markus Wulftange
-
Ah, vielen Dank Gumbo. Die Lösung war also einfach:
PHP-Code:if(isset($dateinamen[$i+$start])) {
echo show_thumbnail("img/".$_GET['gallery']."/".$dateinamen[$i+$start]."")."\n";
}
Ähnliche Themen
-
Problem: Gallery-Script mit Div
Von tonzy im Forum Javascript & AjaxAntworten: 0Letzter Beitrag: 16.12.06, 01:10 -
Problem mit Gallery Script
Von Dopamin2485 im Forum PHPAntworten: 1Letzter Beitrag: 18.10.06, 14:22 -
Gallery Script mit Windows XP SP2 problem
Von tommx im Forum PHPAntworten: 1Letzter Beitrag: 22.02.05, 11:28 -
Gallery Script
Von judicious im Forum PHPAntworten: 16Letzter Beitrag: 04.05.04, 10:37 -
gallery script Problem
Von Perforator im Forum PHPAntworten: 1Letzter Beitrag: 31.01.03, 13:33





Zitieren
Login






[PHP][Snippet] Array zu XML konvertieren