tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
6
ZUGRIFFE
385
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    versuch13 versuch13 ist offline Mitglied Brilliant
    Registriert seit
    Feb 2005
    Beiträge
    950
    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
    Angehängte Dateien Angehängte Dateien
     

  2. #2
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    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

  3. #3
    versuch13 versuch13 ist offline Mitglied Brilliant
    Registriert seit
    Feb 2005
    Beiträge
    950
    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ß
     

  4. #4
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    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

  5. #5
    versuch13 versuch13 ist offline Mitglied Brilliant
    Registriert seit
    Feb 2005
    Beiträge
    950
    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?

    PHP-Code:
    $dateinamen[$i+$start
    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?

    Aber ich weiß es einfach echt nicht zu lösen? Noch ein Tipp vielleicht bitte?
     

  6. #6
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    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

  7. #7
    versuch13 versuch13 ist offline Mitglied Brilliant
    Registriert seit
    Feb 2005
    Beiträge
    950
    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

  1. Problem: Gallery-Script mit Div
    Von tonzy im Forum Javascript & Ajax
    Antworten: 0
    Letzter Beitrag: 16.12.06, 01:10
  2. Problem mit Gallery Script
    Von Dopamin2485 im Forum PHP
    Antworten: 1
    Letzter Beitrag: 18.10.06, 14:22
  3. Antworten: 1
    Letzter Beitrag: 22.02.05, 11:28
  4. Gallery Script
    Von judicious im Forum PHP
    Antworten: 16
    Letzter Beitrag: 04.05.04, 10:37
  5. gallery script Problem
    Von Perforator im Forum PHP
    Antworten: 1
    Letzter Beitrag: 31.01.03, 13:33