Ordnerstruktur auslesen und anzeigen

cliodriver

Mitglied
ich brauch mal wieder etwas hilfe da ich nicht weiter komme

ich habe in der Website einen ordnerstruktur für die bilder. die ordnerstruktur und die ausgabe mit links funktioniert schon. aber die Sortierung macht mir wieder zu schaffen

hier der code:

PHP:
<?php 
    $dir="Events/"; 
    $handle=opendir($dir);
   
    while (false !==($folder=readdir($handle))) {    
        if (is_dir($dir.$folder) and $folder !=="." and $folder !=="..") {          
?>
<div class="archiv">
<?php       
            echo "<h1>$folder</h1>"; // Jahr
           
            $dir1="$dir$folder/"; // Auflistung Jahre
            $handle1=opendir($dir1);
           
            while (false !==($folder1=readdir($handle1))) {    
                if (is_dir($dir1.$folder1) and $folder1 !=="." and $folder1 !=="..") {      

                echo "<h2>$folder1</h2>"; // Event

                $dir2="$dir1$folder1/"; // Auflistung Events
                $handle2=opendir($dir2);
           
                while (false !==($folder2=readdir($handle2))) {    
                    if (is_dir($dir2.$folder2) and $folder2 !=="." and $folder2 !=="..") {
                   
                            if ($folder2 == "Bilder") {
                             echo "<a href='index.php?page=bilder.php&imagepath=$dir2$folder2'>$folder2</a></br>";
                            }
                            if ($folder2 == "Videos") {
                             echo "<a href='index.php?page=$dir2$folder2/videos.php'>Videos</a></br>";
                            }

                    $dir3="$dir2$folder2/"; // Auflistung Events Unterordner
                    $handle3=opendir($dir3);
           
                    while (false !==($folder3=readdir($handle3))) {    
                        if (is_dir($dir3.$folder3) and $folder3 !=="." and $folder3 !=="..") {      
                           
                            if ($folder3 == "Bilder") {
                             echo "$folder2/<a href='index.php?page=bilder.php&imagepath=$dir3$folder3'>$folder3</a></br>";
                            }
                            if ($folder3 == "Videos") {
                             echo "$folder3/<a href='index.php?page=$dir3$folder3/videos.php'>Videos</a></br>";
                            }
                        }
                    }
                    }
                }
                echo "</br>";
                }
            }
            //echo "<p></p>";
?>
</div>
<?php
            }
        }
    closedir($handle3);
    closedir($handle2);
    closedir($handle1);
    closedir($handle);
?>

der link der die seite aufruft

http://seitelschlag.at/index.php?page=imagearchives.php

jemand eine Idee wie ich das lösen könnte? vielleicht auch das auslesen und ausgabe der ordnerstruktur eleganter wird?

danke schonmal
 
Ich würde eine Rekursive Funktion schreiben, die ein Array zurück gibt. Dieses Array könnte man mittels array_multisort sortieren, wie es einen beliebt.

Anschließend eine zweite Rekursive Funktion, die die Ausgabe durchführt.
 
ok, neuer code ... trotzdem noch etwas umständlich aber für mehr reicht mein anfängerwissen noch nicht. zumindest bin ich jetzt mit der ausgabe zufrieden und zukünftig sollte auch keine Änderung/Erweiterung notwendig sein, da die ordnerstruktur nicht tiefer wird

PHP:
<?php

$dir    = opendir("Events/");
$folders  = array();

while ($folder = readdir ($dir))
    {
     if ($folder != "." AND $folder != "..")
      $folders[] = $folder;
    }
   
closedir($dir);
natsort($folders);

    foreach($folders AS $folder)
        {
?>
<div class="archiv">
<?php       
        echo "<h1>$folder</h1>";
       
        $dir1    = opendir("Events/$folder");
        $folders1  = array();

        while ($folder1 = readdir ($dir1))
            {
             if ($folder1 != "." AND $folder1 != "..")
              $folders1[] = $folder1;
            }
   
        closedir($dir1);
        natsort($folders1);

            foreach($folders1 AS $folder1)
                {
                //echo "<h2>$folder1</h2>";
       
                $dir2="Events/$folder/$folder1/"; // Auflistung Events
                $handle=opendir($dir2);
           
                while (false !==($folder2=readdir($handle))) {    
                    if (is_dir($dir2.$folder2) and $folder2 !=="." and $folder2 !=="..") {
                   
                        if ($folder2 == "Bilder") {
                        echo "<b>$folder1 / </b><a href='index.php?page=bilder.php&imagepath=$dir2$folder2'>$folder2</a></br>";
                        }
                        if ($folder2 == "Videos") {
                        echo "<b>$folder1 / </b><a href='index.php?page=$dir2$folder2/videos.php'>Videos</a></br>";
                        }
               
                            $dir3="Events/$folder/$folder1/$folder2/"; // Auflistung Events Unterordner
                            $handle1=opendir($dir3);
           
                            while (false !==($folder3=readdir($handle1))) {    
                                if (is_dir($dir3.$folder3) and $folder3 !=="." and $folder3 !=="..") {      
                           
                                    if ($folder3 == "Bilder") {
                                     echo "<b>$folder1 / $folder2 / </b><a href='index.php?page=bilder.php&imagepath=$dir3$folder3'>$folder3</a></br>";
                                    }
                                    //if ($folder3 == "Videos") {
                                     //echo "$folder3/<a href='index.php?page=$dir3$folder3/videos.php'>Videos</a></br>";
                                    //}
                                }
                            }
                    }
                }
                echo "</br>";
                }
?>
</div>
<?php
        }

    closedir($handle1);
    closedir($handle);

?>
 
Sortierung schemenhaft zb.:

2008
- unterordner 1
- unterordner 2

2009
- unterordner 1
-- unterordner 1-1
- unterordner 2
-- unterordner 2-2

2010
usw....

siehe http://seitelschlag.at/index.php?page=imagearchives.php

das jahr und der erste unterordner sind mir mit meinem code gelungen zu sortieren. die nächsten u-ordner nicht mehr, was aber nicht so tragisch iat. gab ausgabefehler weil da schon andere Dateien drinnen sind, ich aber nur ordner ohne Inhalt brauche
 
???? Sorry, ich nix verstehn.

Ich glaube aber, das du mit einer sich selber aufrufenden Funktion am besten bedient wärst
 
Dann versuch mindestens das hier mal zu erklären.
gab ausgabefehler weil da schon andere Dateien drinnen sind, ich aber nur ordner ohne Inhalt brauche

Es ist nicht tragisch? Dann hats sichs ja erledigt. Thema schliessen
Was für eine Art von Fehler? Fehlertext?
Und verstehe ich das richtig? Du willst nur die Ordner, die keinen Inhalt haben?
 
Zurück