kostenloser Webspace werbefrei: lima-city


Schleife nach drei Durchläufen abbrechen

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    fabian-riedel

    Kostenloser Webspace von fabian-riedel

    fabian-riedel hat kostenlosen Webspace.

    Servus,
    Ich habe folgende Funktion, die mir Bilder aus Bilderordnern ausliest:

    function recdir($dir) 
    { 
        $handle = opendir($dir); 
        while ($file = readdir($handle)) 
        {
            if ($file != "." && $file != "..") 
            { 
             
                // Datei ist ein Verzeichnis
                if (is_dir($dir.$file))
                {
                    echo "<a href=\"../bilder/".$file."\"><h1>".$file."</h1></a>";
                    echo "<a class=\"btn green\" href=\"../bilder/".$file."\" style=\"margin-right: 7px;\">Gesamte Gallerie anzeigen</a>";
                    echo "<a class=\"btn green\" href=\"../bilder/".$file."#comment\">Kommentare anzeigen</a>";
                    echo "<br><br>";
                    include("images/".$file."/text.txt");
                    echo "<br><br>";
                    recdir($dir.$file.'/');
                }
                // Datei ist kein Verzeichnis
                else
                {$i=0; if($i<3){ $i++;
    
                       // Bildinfos ermitteln (Breite, Höhe)
                       $info = getImageSize($dir.$file);
    
                       // Breitbild anzeigen
                    if($info[0]>$info[1]){
                       echo "<a rel=\"colorbox\" href=\"".$dir.$file."\">";
                    echo "<img class=\"gallery\" style=\"margin: 10px;\" src=\"/thumbnails/".$dir.$file."\" width=\"150px\" height=\"113px\" alt=\"\"></a>";
                    }
    
                    if($info[0]<$info[1]){
                       echo "<a rel=\"colorbox\" href=\"".$dir.$file."\">";
                    echo "<img class=\"gallery\" style=\"margin: 10px;\" src=\"/thumbnails/".$dir.$file."\" width=\"85px\" height=\"113px\" alt=\"\"></a>";
                    return;}else{}
                    }
    
                } 
            }
        } 
        closedir($handle); 
    }


    Allerding möchte ich nicht, dass alle Bilder eines Ordners ausgelesen werden, sondern dass nur fünf Bilder aus jedem Ordner angezeigt werden.
    Deshalb muss ich die Schleife eig. nach fünf durchgängen stoppen oder die Bilder in einen Array einlesen.
    Weiß jemand die Lösung auf mein Problem?

    Danke im Vorraus,
    Fabi
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. ole-reglitzki

    Kostenloser Webspace von ole-reglitzki

    ole-reglitzki hat kostenlosen Webspace.

    $i = 0;
        while ($file = readdir($handle) && $i < 5) 
        {
            $i ++;


    bricht also nach fünf Durchläufen ab...
  4. @ole-reglitz: `&&` hat eine höhere Precedance als `=` also würde dein Code als `$file = (readdir($handle) && $i < 5)` ausgeführt werden. Beheben kannst du es, indem du entweder die Anweisungen umdrehst (was hier effizienter ist) oder Klammern setzt:
    $i = 0;
        while ($i++ < 5 && $file = readdir($handle)) 
        {
            // code
  5. Autor dieses Themas

    fabian-riedel

    Kostenloser Webspace von fabian-riedel

    fabian-riedel hat kostenlosen Webspace.

    Danke euch beiden, tut leider in beiden Ausführungen nicht!
    Bei der Lösung von ole-reglitzki werden gar keine Bilder angezeigt.
    Bei der Lösung von nikic sieht mein Code dann so aus:

    function recdir($dir) 
    { 
        $handle = opendir($dir); 
        $i = 0;
            while ($i++ < 5 && $file = readdir($handle)) 
            {
            if ($file != "." && $file != "..") 
            { 
             
                // Datei ist ein Verzeichnis
                if (is_dir($dir.$file))
                {
                    echo "<a href=\"../bilder/".$file."\"><h1>".$file."</h1></a>";
                    echo "<a class=\"btn green\" href=\"../bilder/".$file."\" style=\"margin-right: 7px;\">Gesamte Gallerie anzeigen</a>";
                    echo "<a class=\"btn green\" href=\"../bilder/".$file."#comment\">Kommentare anzeigen</a>";
                    echo "<br><br>";
                    include("images/".$file."/text.txt");
                    echo "<br><br>";
                    recdir($dir.$file.'/');
                }
                // Datei ist kein Verzeichnis
                else
                {$i=0; if($i<3){ $i++;
    
                       // Bildinfos ermitteln (Breite, Höhe)
                       $info = getImageSize($dir.$file);
    
                       // Breitbild anzeigen
                    if($info[0]>$info[1]){
                       echo "<a rel=\"colorbox\" href=\"".$dir.$file."\">";
                    echo "<img class=\"gallery\" style=\"margin: 10px;\" src=\"/thumbnails/".$dir.$file."\" width=\"150px\" height=\"113px\" alt=\"\"></a>";
                    }
    
                    if($info[0]<$info[1]){
                       echo "<a rel=\"colorbox\" href=\"".$dir.$file."\">";
                    echo "<img class=\"gallery\" style=\"margin: 10px;\" src=\"/thumbnails/".$dir.$file."\" width=\"85px\" height=\"113px\" alt=\"\"></a>";
                    return;}else{}
                    }
    
                } 
            }
        } 
        closedir($handle); 
    }

    oder ist da was falsch?
    und damit ist alles wie davor - außer dass beim letzten Bilderordner nur noch 3 Bilder angezeigt werden: http://fabian-riedel.lima-city.de/bilder.

    Hat jemand noch ne andere Lösung?
    Fabi
  6. g****e

    sosehr nikic mich wieder haut, so sehr poste ich es auch^^
    probiers mal hiermit:
    $=0
    while (($i < 5) && ($file = readdir($handle)))  {
    i++;

    also mit geklammerten bedingungen. wenn das aber auch nich funzt was ich mir nu garnich vorstellen kann, dann machs über die schlimme methode:

    $i=0;
     while ($file = readdir($handle) {
    $i++;
    if ($i>=5) {break;}
    //Dein sonstiger Code
    }


    es ist ganz böse, ich weiß, break und continue soll man nich so benutzen, aber wenn der andere kram nich funktioniert ist dashier zumindest eine temporäre lösung
  7. Du könntest bevor du ggamees Methode probierst auch erstmal die Fehler beheben:

    Zuerst einmal benutzt du $i doppelt. Einmal hast du es schon am Anfang benutzt und jetzt hast du es nochmal zusätzlich eingebaut.

    Also solltest du dein neues $i vllt lieber $j nennen^^.

    Weiterhin machst du den Fehler und erhöhst dein $i nicht (außer im else-Zweig).
    Also müsste das ganze eher so aussehen (ungetestet):

    function recdir($dir) 
    { 
        $handle = opendir($dir); 
        $j= 0;
            while ($j++ < 5 && $file = readdir($handle)) 
            {
            if ($file != "." && $file != "..") 
            { 
             
                // Datei ist ein Verzeichnis
                if (is_dir($dir.$file))
                {
                    echo "<a href=\"../bilder/".$file."\"><h1>".$file."</h1></a>";
                    echo "<a class=\"btn green\" href=\"../bilder/".$file."\" style=\"margin-right: 7px;\">Gesamte Gallerie anzeigen</a>";
                    echo "<a class=\"btn green\" href=\"../bilder/".$file."#comment\">Kommentare anzeigen</a>";
                    echo "<br><br>";
                    include("images/".$file."/text.txt");
                    echo "<br><br>";
                    recdir($dir.$file.'/');
                }
                // Datei ist kein Verzeichnis
                else
                {$i=0; if($i<3){ $i++;
    
                       // Bildinfos ermitteln (Breite, Höhe)
                       $info = getImageSize($dir.$file);
    
                       // Breitbild anzeigen
                    if($info[0]>$info[1]){
                       echo "<a rel=\"colorbox\" href=\"".$dir.$file."\">";
                    echo "<img class=\"gallery\" style=\"margin: 10px;\" src=\"/thumbnails/".$dir.$file."\" width=\"150px\" height=\"113px\" alt=\"\"></a>";
                    }
    
                    if($info[0]<$info[1]){
                       echo "<a rel=\"colorbox\" href=\"".$dir.$file."\">";
                    echo "<img class=\"gallery\" style=\"margin: 10px;\" src=\"/thumbnails/".$dir.$file."\" width=\"85px\" height=\"113px\" alt=\"\"></a>";
                    return;}else{}
                    }
    
                } 
            }
    $j++;
        } 
        closedir($handle); 
    }


    Ich hoffe ich habe mich nicht bei den Klammern verzählt...
  8. keine Fragen stellen, sondern einfach übernehmen:
    function recdir($dir) 
    { 
        $handle = opendir($dir); 
        $i = 0
        while ($i < 0 && $file = readdir($handle)) 
        {
            if ($file != "." && $file != "..") 
            { 
             
                // Datei ist ein Verzeichnis
                if (is_dir($dir.$file))
                {
                    echo "<a href=\"../bilder/".$file."\"><h1>".$file."</h1></a>";
                    echo "<a class=\"btn green\" href=\"../bilder/".$file."\" style=\"margin-right: 7px;\">Gesamte Gallerie anzeigen</a>";
                    echo "<a class=\"btn green\" href=\"../bilder/".$file."#comment\">Kommentare anzeigen</a>";
                    echo "<br><br>";
                    include("images/".$file."/text.txt");
                    echo "<br><br>";
                    recdir($dir.$file.'/');
                }
                // Datei ist kein Verzeichnis
                else
                {$i=0; if($i<3){ $i++;
    
                       // Bildinfos ermitteln (Breite, Höhe)
                       $info = getImageSize($dir.$file);
    
                       // Breitbild anzeigen
                    if($info[0]>$info[1]){
                       echo "<a rel=\"colorbox\" href=\"".$dir.$file."\">";
                    echo "<img class=\"gallery\" style=\"margin: 10px;\" src=\"/thumbnails/".$dir.$file."\" width=\"150px\" height=\"113px\" alt=\"\"></a>";
                    }
    
                    if($info[0]<$info[1]){
                       echo "<a rel=\"colorbox\" href=\"".$dir.$file."\">";
                    echo "<img class=\"gallery\" style=\"margin: 10px;\" src=\"/thumbnails/".$dir.$file."\" width=\"85px\" height=\"113px\" alt=\"\"></a>";
                    return;}else{}
                    }
                    $i++;
                } 
            }
        } 
        closedir($handle); 
    }
  9. Autor dieses Themas

    fabian-riedel

    Kostenloser Webspace von fabian-riedel

    fabian-riedel hat kostenlosen Webspace.

    loadi schrieb:
    Zuerst einmal benutzt du $i doppelt. Einmal hast du es schon am Anfang benutzt und jetzt hast du es nochmal zusätzlich eingebaut.


    Stimmt! Das ist mir garnicht aufgefallen. Das untere war unnötig und deshalb hat es nicht funktioniert.
    Jetzt wo der Fehler ausgebessert ist tut nikics Methode auch.
    Danke euch für die Antworten
    Fabi
  10. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!