Constantin Kiesling: Liste von Unterordnern

Hallo liebe Community!

Ich brauche mal wieder Tipps... Ich würde gerne ein Php Script schreiben, dass alle Unterordner des Verzeichnisses anzeigt, in dem es liegt. Die liste soll sich also einfach automatisch erweitern, wenn neue Unterordner dazukommen. Die Ausgabe der Liste sollte so sein, dass man einfach über Links zu allen Unterordnern gelangen kann.

Wie gehe ich das am besten an? ICh hab zwar im PHP-MAnual gestöbert, aber bin jetzt nur noch verwirrter...

Ich würde mich über eure Hilfe wirklich sehr freuen!
MfG, Consti

  1. Hiho

    Ungeteste und ohne Gewähr:

    $ordner = opendir('dir');
    while($in = readdir($ordner)){
    if(is_dir($in)){
     echo $in . "<br>";
    }
    }

    Muss wahrscheinlich noch verbessert werden, aber ein Anfang sollte es sein

    1. Hi!

      $ordner = opendir('dir');
      while($in = readdir($ordner)){
      if(is_dir($in)){
       echo $in . "<br>";
      }
      }

      Es funktioniert, wenn ich statt "dir" einen Punkt (".") einsetze, weil ja das Script im selben Ordner liegt, von dem die Unterverzeichnisse bestimmt werden sollen.

      Allerdings gibt die Schleife am Anfang auch die Werte "." und ".." aus, kann ich die einfach mit einer If-Bedingung entfernen?

      Und nach welchem Muster werden die Ergebnisse geordnet? Nach meinen Tests würde ich sagen nach dem Entstehungsdatum, ist das richtig?

      Schon mal vielen Dank für die bisherige Hilfe!
      MfG,
      Consti

      1. Moin,

        Allerdings gibt die Schleife am Anfang auch die Werte "." und ".." aus, kann ich die einfach mit einer If-Bedingung entfernen?

        if($in != "." && $in != "..") echo $in."<br>";

        Und nach welchem Muster werden die Ergebnisse geordnet?

        Gar nicht. Sie kommen so rein wie das Betriebssystem sie von Platte liest.

        Nach meinen Tests würde ich sagen nach dem Entstehungsdatum, ist das richtig?

        Jain, zunächst werden sie natürlich mehr oder weniger nach Erstellungsdatum auf der Platte liegen. Das kann sich aber ganz schnell ändern, wenn man Sachen löscht oder umherverschiebt.

        BTW: Das hätte dir beides die Dokumentation zu readdir() in weniger als 30s sagen können.

        --
        Henryk Plötz
        Grüße aus Berlin
        ~~~~~~~~ Un-CDs, nein danke! http://www.heise.de/ct/cd-register/ ~~~~~~~~
        ~~ Help Microsoft fight software piracy: Give Linux to a friend today! ~~
      2. Und nach welchem Muster werden die Ergebnisse geordnet? Nach meinen Tests würde ich sagen nach dem Entstehungsdatum, ist das richtig?

        Wenn du die Ergebnisse anders ordnen wilst, dann würde ich sie, statt dem echo erst mal in einen array packen, diesen dann sortieren und dann alles wieder ausgeben

        Marc

        1. Wenn du die Ergebnisse anders ordnen wilst, dann würde ich sie, statt dem echo erst mal in einen array packen, diesen dann sortieren und dann alles wieder ausgeben

          Wir kann ich denn Daten aus einer Schleife in einen Array packen? Geht das überhaupt? Sorry für meine Dummheit, aber ich kanns halt nicht besser.

          lG,
          Consti

  2. Hallo Consti,

    Ich brauche mal wieder Tipps... Ich würde gerne ein Php Script schreiben, dass alle Unterordner des Verzeichnisses anzeigt, in dem es liegt.

    Vielleicht hilft Dir das weiter:

    "Wie kann ich den Inhalt eines Verzeichnisses samt dem Inhalt aller Unterverzeichnisse ausgeben?"
    http://www.dclp-faq.de/q/q-code-verzeichnis.html

    Eine andere Moeglichkeit, die auf den meisten Apaches funktionieren duerfte (selbst wenn kein PHP vorhanden ist):
    Keine index.html (oder wie sie bei Dir halt heissen muessen) in die betreffenden Verzeichnisse stellen.
    Dann macht der Apache selbst die Auflistungen, und zum Teil kann man auch das "Layout" etwas beeinflussen. Zudem ist durch Klick auf den entsprechenden Spaltentitel ein Sortieren nach Dateiname, Datum, Groesse ganz bequem moeglich.
    Stichworte: mod_autoindex, fancy indexing
    Beschreibung:
    http://httpd.apache.org/docs/mod/mod_autoindex.html
    Und so sieht's aus:
    http://www.apache.org/dist/

    HTH, mfg
    Thomas