Verzeichnis incl. Unterordner auslesen - Verzeichnistiefe unbekannt

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

  • Verzeichnis incl. Unterordner auslesen - Verzeichnistiefe unbekannt

    Hi,

    Wie kann ich ein Verzeichnis incl. allen Unter, Unterunter, etc. -Ordnern auslesen? Ich weiß nicht, wie wie tief / hoch / weit oder was auch immer die Ordner gehen. Ich brauch nur die Ordnerstruktur - event. noch ob, ein Ordner auch Dateien enthält ( da werd ich irgendwann ein paar Kontrollstukturen einfügen, ist aber noch nicht so wichtig..)

    Ich denk mal, das wird nur mit Funktionen gehen - hab aber damit noch nicht gearbeitet. Was ich hier so an Code-Schnippseln gefunden hab, liest- soweit ich den Code entziffern konnte - alles nur ein Verzeichnis aus. Das logische Problem (falls es eins ist) wäre in meinen Augen, dass eine Funktion (die, die die Ordner ausliest) sich schon beim ersten Unterordner wieder selbst aufruft.

    Hoffe ihr könnt mir helfen.

    Greez,
    Syco
    [COLOR=darkblue].: 1+1=23 :.[/COLOR]

  • #2
    http://www.php-resource.de/forum/sho...threadid=26467

    dient zwar zum verzeichniss kopieren sollte dir aber helfen

    musste halt anpassen

    mfg

    Kommentar


    • #3
      Sorry, ich check dein Script nicht ganz. Kannst du mir sagen, wo der Kniff ist, der das ganze automatisiert, sodass das Script alle Verzeichnisse und Unterverzeichnisse systematisch durchgeht.
      [COLOR=darkblue].: 1+1=23 :.[/COLOR]

      Kommentar


      • #4
        der kniff ist der, dass die funktion sich selbst wieder aufruft, das nennt sich rekursion

        Definition von Rekursion: siehe Rekursion
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          Ohne den Thread gelesen zu haben: rekursiver aufruf der fkt.

          Kommentar


          • #6
            Köhntopp weiss doch immer wieder eine Lösung

            Wie kann ich den Inhalt eines Verzeichnisses samt dem Inhalt aller Unterverzeichnisse ausgeben?
            if ($getraenk=="kein kaffee mehr da" && $verlangen=="gross") { $arbeitsmoral="im keller"; }

            Kommentar


            • #7
              Hallo

              hier findet sich von bigi noch eine andere Funktion, die das auch kann. Im Unterschied zu der obigen Funktion gibt diese ihr Ergebnis in einem Array aus.

              viele Grüsse
              tian

              Funktion von bigi@agun.com:
              ----------------------------------------------------------------------
              PHP-Code:
              function retrieveDirs($rootdirpath) {
                if (
              $dir = @opendir($rootdirpath)) {
                  
              $array[] = $rootdirpath;
                  while ((
              $file readdir($dir)) !== false) {
                    if (
              is_dir($rootdirpath."/".$file) && $file != "." && $file != "..") {
                      
              $array array_merge($arrayretrieveDirs($rootdirpath."/".$file));
                    }
                  }
                  
              closedir($dir);
                }
                return 
              $array;

              Zuletzt geändert von tian; 30.09.2003, 21:55.

              Kommentar


              • #8
                Danke mal. Aber ich bin jetzt wieder mal bei so einem Scheiß Fehler, der mich schon bald 20 min. aufhält und ich weiß einfach nicht, wo das Prob ist.

                Erst mal das Scirpt, das ich jetzt verwende:
                PHP-Code:
                 function traverseDirectory($dirid) {
                    while ((
                $file readdir($dirid)) !==false) {
                        if ((
                $file !== ".") && ($file !== "..")) {
                            if (
                is_dir($file)) {
                                
                $curdir getcwd();
                                echo 
                substr($curdir20)."/";
                                echo 
                "$file <br />\n";
                                
                chdir($file);
                                
                $newdir opendir(".");
                                
                $closedir traverseDirectory($newdir);
                                
                closedir($closedir);
                                
                chdir("..");
                            } 
                        }
                    }
                    return (
                $dirid);
                }
                $dirid opendir(".");
                $closedir traverseDirectory($dirid);
                closedir($closedir); 
                funzt super, aber wenn ich sattdessen folgendes schreibe, klappts nicht mehr - zur Erklärung: ich hab das echo substr($curdir, 20)."/"; mit einem dynamischen Wert bestückt. Ziel: Ich möchte absolute Links zu den Ordnern bekommen.
                PHP-Code:
                $basis_url getcwd();
                $basis_url_laenge strlen($basis_url);

                function 
                traverseDirectory($dirid) {
                    while ((
                $file readdir($dirid)) !==false) {
                        if ((
                $file !== ".") && ($file !== "..")) {
                            if (
                is_dir($file)) {
                                
                $curdir getcwd();
                                echo 
                substr($curdir$basis_url_laenge );
                                echo 
                "$file <br />\n";
                                
                chdir($file);
                                
                $newdir opendir(".");
                                
                $closedir traverseDirectory($newdir);
                                
                closedir($closedir);
                                
                chdir("..");
                            } 
                        }
                    }
                    return (
                $dirid);
                }
                $dirid opendir(".");
                $closedir traverseDirectory($dirid);
                closedir($closedir); 
                EDIT:
                Ich hatte jetzt sage und schreibe 2 h das Antwort-Fenster offen, also hab ich die letzen beiden Posts noch gar nicht gesehen
                @Nr.1 ich hab show_dir(".") aufgerufen und leider nur die Files eben dieses Verzeichnisses angezeitgt bekommen.
                @Nr.2 .. mom, mal testen ..

                Zuletzt geändert von syco23; 30.09.2003, 23:05.
                [COLOR=darkblue].: 1+1=23 :.[/COLOR]

                Kommentar


                • #9
                  hier noch ne alternative
                  Ich denke, also bin ich. - Einige sind trotzdem...

                  Kommentar


                  • #10
                    Versuche gerade diesen codeschnipsel oben für meine seite zu benutzen.

                    Nur bei mir soll der Inhalt eines Unterverzeichnisses angezeigt bzw. in einem array geschrieben werden.

                    Ich dachte ich kann einfach

                    ...
                    $dirid = opendir(".");
                    ...

                    in
                    ...
                    $dirid = opendir("13");
                    // 13 ist ein unterverzeichnis von dem ordner wo die PHP-Datei steht.
                    ...

                    "/13", "13/", "./13", "./13/" <- die funktionieren auch nicht.

                    ändern, klappt aber nicht.

                    Warum nicht?
                    Kann mir jemand mal sagen was ich falsch mache?

                    Danke schonmal

                    Kommentar


                    • #11
                      Original geschrieben von syco23

                      PHP-Code:
                      $basis_url getcwd();
                      $basis_url_laenge strlen($basis_url);

                      function 
                      traverseDirectory($dirid) {
                          while ((
                      $file readdir($dirid)) !==false) {
                              if ((
                      $file !== ".") && ($file !== "..")) {
                                  if (
                      is_dir($file)) {
                                      
                      $curdir getcwd();
                                      echo 
                      substr($curdir$basis_url_laenge );
                                      echo 
                      "$file <br />\n";
                                      
                      chdir($file);
                                      
                      $newdir opendir(".");
                                      
                      $closedir traverseDirectory($newdir);
                                      
                      closedir($closedir);
                                      
                      chdir("..");
                                  } 
                              }
                          }
                          return (
                      $dirid);
                      }
                      $dirid opendir(".");
                      $closedir traverseDirectory($dirid);
                      closedir($closedir); 
                      die variable $basis_url_laenge ist innerhalb der funktion nicht sichtbar.
                      Entweder als parameter übergeben, oder in der fkt. als global definieren.

                      Kommentar

                      Lädt...
                      X