Ankündigung

Einklappen
Keine Ankündigung bisher.

Skript zeigt mehr Datein an als es sollte/könnte

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Skript zeigt mehr Datein an als es sollte/könnte

    Hallo PHP Freunde ich freue mich hier zu sein und möchte gleich mal mit einem, zumindest für mich, sehr verwirrenden Problem daher kommen.
    Kurz zur grundlegenden Idee:
    Ich will auf meiner Gallery Seite den Inhalt automatisieren. Damit ich nicht jedes mal Zeilen über Zeilen neues Markup hinzufügen muss wenn ich neue Bilder hochlade will ich dass ein Skript das automatisch macht.
    Die Idee mal kurz in sehr vereinfachtem Pseudocode:
    Code:
    Suche in Ordner XY;
    
    Für jeden gefunden Ordner:
        Nimm den Namen des Ordner als Überschrift;
        Suche in diesem Ordner;
        Für jede gefundene Datei:
            Suche im Ordner thumbs nach dem passenden Thumbnail;
            Erstelle ein <a> Tag mit diesem Thumbnail das zu dem Originalbild verlinkt;
    Das ist jetzt mal stark vereinfacht mein Aufbau.
    Jetzt gebietet mir mein logischer Verstand, wenn das Skript in dem Ordner, wo es nach den Datein suchen soll, z.B. 7 Datein findet, sollte das Skript auch nur so viele Datein unterm Strich raus geben. Ich bekomme seltsamer Weise 10 Bilder angezeigt obwohl nur 7 in dem Ordner sind. Das bedeutet, die ersten 7 werden mir ganz normal so angezeigt, wie es erwartet wird aber dann wird mir das letzte Bild noch zusätzlich drei mal angezeigt und ich versteh einfach nicht wieso.
    Ich habe auch schon mit einem Zähler geprüft ob die foreach Schleife wirklich nur 7 mal durchläuft und ja, sie läuft in der Tat nur 7 mal durch. Um jetzt nochmal ganz sicher zu gehen habe ich auch die Länge des Arrays überprüft, welches in dieser foreach Schleife ausgewertet wird. Ja, es ist tatsächlich nur 7 Elemente lang. Also intern scheint alles zu stimmen, nur am Frontend kommt was anderes raus. Wenn doch aber ganz offensichtlich nur 7 Datein gefunden werden und somit die Schleife auch nur 7 mal ausgeführt wird, warum bekomme ich dann 7+3 Bilder?

    Ich lüfte jetzt mal das Geheimnis, hier ist das gesamte Skript:

    PHP-Code:
    <?php
            
            
    // local variables
            
    $class_gallery '"gallery"';
            
    $class_sepTitle '"sepTitle"';
            
    $class_sepLine '"sepLine"';
            
    $class_fancybox '"fancybox"';
            
            
    $test 0;
            
            
    $searchRoot "images/galleryPics/"// = images/galleryPics/
            
            // glob() returns an array with the content of the searched directory
            
    $dirs glob($searchRoot "*"); // array = [images/galleryPics/directoryname1, images/galleryPics/directoryname2, ...]
            
            
            // foreach-loop to iterate through the elements of $dirs
            
    foreach($dirs as $dir)
                {
                
                
    $dirName str_replace($searchRoot""$dir);
                
    $dirName_out '"' $dirName '"';
                
                echo(
    "\t<div class=" $class_gallery ">\n");
                echo(
    "\t\t\t\t<h1 class" $class_sepTitle ">" $dirName "</h1>\n");
                echo(
    "\t\t\t\t<div class=" $class_sepLine "></div>\n");
                
                
                
    $searchDeeper $dir "/"// = images/galleryPics/directoryname/
                
                
                // glob() returns an array with the content of the searched directory
                
    $pics glob($searchDeeper "*" ".jpg"); // array = [images/galleryPics/directoryname/filename1.xyz, images/galleryPics/directoryname/filename2.xyz, ...]
                
                
                // foreach-loop to iterate though the elements of $pics
                
    foreach($pics as $pic)
                    {
                    
                    if(
    is_file($pic))
                        {
                        
                        
    $pic_out '"' $pic '"';
                        
    $fileName str_replace($searchDeeper""$pic); // removes $searchDeeper from $pic -> filename.xyz
                        
    $picName str_replace(".jpg"""$fileName); // removes .jpg from $fileName -> filename
                                
                        
    $picName_out '"' str_replace("_"" "$picName) . '"';
                        
    $thumb_out '"' $searchDeeper "thumbs/" $picName "_thumb.jpg" '"';
                            
                            
                        echo(
    "\t\t\t\t<a class=" $class_fancybox " href=" $pic_out " rel="$dirName_out " title=" $picName_out "><img src=" $thumb_out "</a>\n");
                                
                        
    $test++;
                        }
                    
                    }
                    
                echo(
    "\t\t\t</div>\n\n");
                echo(
    $test);
                
                }
            
            
            
    ?>
    Das Verhalten dieses Skriptes könnt ihr unter www.coulrophobia.de/gallery.php bestaunen.

  • #2
    warum bekomme ich dann 7+3 Bilder?
    kann oich dir nicht erklären, zumal ich nur sieben sehe.
    Angehängte Dateien

    Kommentar


    • #3
      Betrachte nicht nur die Thumbnails, klicke dich durch die Gallery, speziell das letzte Bild.

      Kommentar


      • #4
        hm, haste das auch gemacht?
        bei der netzwerkanalyse fällt mir spontan auf, es werden die ersten drei bilder geladen, aber nur das dritte (3 mal)angezeigt.

        zudem kommt:
        HTML-Code:
        <h1 class"sepTitle">Ace of broken hearts</h1>
        <!--  und auch der ganze block -->
        <a class="fancybox" href="http://www.php.de/images/galleryPics/Ace of broken hearts/01_-_Small_compared_to_the_whole.jpg" rel="Ace of broken hearts" title="01 - Small compared to the whole"><img src="http://www.php.de/images/galleryPics/Ace of broken hearts/thumbs/01_-_Small_compared_to_the_whole_thumb.jpg"</a>
        ist kein valides html.

        Kommentar


        • #5
          Zitat von moma Beitrag anzeigen
          ...es werden die ersten drei bilder geladen, aber nur das dritte (3 mal)angezeigt.
          Wie meinst du das? Bei dir werden nur 3 Bilder geladen?

          Zitat von moma Beitrag anzeigen
          zudem kommt:
          HTML-Code:
          <h1 class"sepTitle">Ace of broken hearts</h1>
          <!--  und auch der ganze block -->
          <a class="fancybox" href="http://www.php.de/images/galleryPics/Ace of broken hearts/01_-_Small_compared_to_the_whole.jpg" rel="Ace of broken hearts" title="01 - Small compared to the whole"><img src="http://www.php.de/images/galleryPics/Ace of broken hearts/thumbs/01_-_Small_compared_to_the_whole_thumb.jpg"</a>
          ist kein valides html.
          Was meinst du mit kein valides HTML, bzw. was macht es nicht valide? Ich habe es für normalen, sauberen Code gehalten.

          Kommentar


          • #6
            Zitat von vegan Beitrag anzeigen
            Was meinst du mit kein valides HTML, bzw. was macht es nicht valide? Ich habe es für normalen, sauberen Code gehalten.
            Das img-Tag wird nicht mehr geschlossen.
            Windows Server gehören NICHT ins Internet!

            Dildo? Dildo!

            Kommentar


            • #7
              Zitat von trollface Beitrag anzeigen
              Das img-Tag wird nicht mehr geschlossen.
              Oh man , diese eine verflixte Klammer, das wäre mir nie im Leben aufgefallen.
              Vielen, vielen Dank, jetzt funktioniert das Skript auch einwandfrei.

              Kommentar


              • #8
                bevor du dich nochmal wunderst:
                Code:
                <h1 class"sepTitle">Ace of broken hearts</h1>
                da fehlr ein =

                Kommentar


                • #9
                  Ok, da muss ich sagen, den Tippfehler hätte ich gar nicht finden können weil er einen kaum wahrnehmbaren "Fehler" auf der Seite produziert hat.
                  Manchmal braucht man einfach etwas Abstand damit einem sowas auffällt.
                  Vielen Dank.

                  Kommentar


                  • #10
                    ne eher mehr Erfahrung oder eine gute IDE
                    in dem Fall hätte dein Fireofx beim Drücken von Strg+U zum beispiel darauf aufmerksam gemacht, alles was rot ist, ist kein valides HMTL
                    Fatal Error: Windows wird gestartet

                    Wie administriert man ein Netzwerk: Beispiel

                    Kommentar

                    Lädt...
                    X