Verzeichnisse & Unterverzeichnisse auslesen

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

  • Verzeichnisse & Unterverzeichnisse auslesen

    Guten Tag miteinander

    Ich habe vorhin das Forum durchsucht und leider keinen passenden Thread zu meiner Frage gefunden.

    Ich habe eine kleine Site gebastelt, welche mir ein Verzeichnis ausliest, alle Dateien und Ordner in eine Tabelle in der Mysql-DB schreibt und sie dann geordnet anzeigt.

    Momentan habe ich es geschafft die Dateien und Verzeichnisse des vorhin in einer Variable angegebenen Pfades auszlesen und auf der Page auszugeben. Nun möchte ich natürlich noch die Dateien auslesen die in den Ordnern sind, welche mir angezeigt werden.

    Habe bis jetzt noch nie mit PHP etwas in der Art gemacht, deshalb brauche ich eure Hilfe.

    PHP-Code:
    $i=0;
    $pfad="./";
    $verz=opendir($pfad);
                                        
    while (
    $file=readdir($verz)) {        
    if(
    $file == "." && $file == "..") {
    echo    
    "";
    }                            
    elseif (
    is_dir($pfad.$file))
    {
    $i++;
    get_dir("$verz/$file");
                                                
    $sql "INSERT INTO temp VALUES('(DIR)".$file."','')";
    $result mysql_query($sql) OR die(mysql_error());
    }
    else {
    $i++;
    $chksum md5_file($file);
                                                
    $sql "INSERT INTO temp VALUES('".$file."','".$chksum."')";
    $result mysql_query($sql) OR die(mysql_error());
    }
    }
    closedir($verz); 
    Auf einer Seite wurde ein Befehl erwähnt, mit welchem auch die Unterverzeichnisse ausgelesen werden können.

    PHP-Code:
    get_dir(...); 
    Ich habe diesen in meinen Code eingefügt.

    Die Seite zeigt mir jetzt zwar die Unterverzeichnisse und deren Dateien an, jedoch:
    1. kreuz und quer durcheinandern und
    2. ganz oben auf der Seite, und schreibt diese nicht in die Mysql-DB.

    Wie muss ich vorgehen? Ich habe nix zu dem Befehl get_dir im Internet gefunden. Ist das ne Art echo welches mir einfach grad alles ausgibt? denn ich hab nirgends ein echo ""; angegeben.

    Wär nett wenn ihr mir helfen würdet.

    Vielen Dank und mit freundlichen Grüssen

    Luca Peter

  • #2
    Re: Verzeichnisse & Unterverzeichnisse auslesen

    Original geschrieben von wkd-
    Ich habe nix zu dem Befehl get_dir im Internet gefunden.
    Das ist keine Standardfunktion von PHP, sondern eine selbst definierte.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Mhh, das wirds sein ^^

      Hab ich in dem Fall total übersehen.

      l8ers, ich seh mal ob ich das fixen kann.

      Kommentar


      • #4
        nen sitemap script sollte genau das richtige für dich sein.
        z.b. http://www.mysticdreams.net/products/index.html ganz unten das script.

        Kommentar


        • #5
          Danke Daniela, ich werds mir wahrscheinlich nachher mal anschauen.

          Jetzt hab ich aber wieder n Problem.

          PHP-Code:
          function get_dir($dir) {
          $fp=opendir($dir);
          $i=0;
                                              while(
          $datei=readdir($fp)) {
          if(
          $datei == "." && $datei == "..") {
          echo 
          $datei."<br>";
          }
          elseif (
          is_dir("$dir/$datei")) {
          echo 
          $datei."<br>";
          get_dir("$dir/$datei"); 
          }
          else {
          echo 
          $datei."<br>";
          }
          }
          closedir($fp);

          Diese Funktion get_dir rufe ich später im Code auf. Wenn ich den Button drücke (per <form> tag) geht es in nach if($_POST['check']) und ruft mir dann gleich die Funktion mit get_dir("./"); auf.

          Jedoch stürzt mir die Site ab und sagt, dass die Seite nicht angezeigt werden kann. Ist die $dir Angabe falsch beim Aufruf der funktion und überlastet so den Server? Wenn nicht, weiss jemand an was das liegt? :S

          Vielen Dank und mit freundlichen Grüssen

          Luca Peter
          Zuletzt geändert von wkd-; 22.08.2006, 13:49.

          Kommentar


          • #6
            Verzeichnisse + md5_file

            Guten Tag noch einmal

            Ich habs nun fertig gebracht, dass alle Files, auch welche die in Unterverzeichnissen liegen, in ne DB eingetragen werden.

            Nur besteht jetzt das Problem, dass die Checksum nicht gebildet wird. Jedoch nur bei den Files, welche in einem Unterordner liegen :S

            PHP-Code:
            function get_dirc($dir) {
            $fp=opendir($dir);
            $i=0;

            while(
            $datei=readdir($fp)) {
            if (
            is_dir("$dir/$datei") && $datei !== "." && $datei !== "..") {
            $i++;

            include(
            "inc/var.inc.php");
            $sql "INSERT INTO checksum VALUES('(dir)&nbsp;".$datei."','')";
            $result mysql_query($sql) OR die(mysql_error());
            get_dirc("$dir/$datei");
            }
            else {
            $i++;
            $chksum md5_file($datei);
                                                        
            $sql "INSERT INTO checksum VALUES('".$datei."','".$chksum."')";
            $result mysql_query($sql) OR die(mysql_error());
            }
            }
            closedir($fp);

            Kann mir da jemand Rat geben an was das liegt?

            Vielen Dank und Gruss

            Luca

            Kommentar


            • #7
              Re: Verzeichnisse + md5_file

              Original geschrieben von wkd-
              Nur besteht jetzt das Problem, dass die Checksum nicht gebildet wird. Jedoch nur bei den Files, welche in einem Unterordner liegen
              Und wo sagst du der checksumme-bildenden Funktion, dass die Datei in einem Unterordner liegt ...?
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                erweitere dein Script so, dass es auch Subdirs durchforstet. Stichwort: Rekursion.
                Zuletzt geändert von TobiaZ; 22.08.2006, 15:32.

                Kommentar


                • #9
                  Danke ersteinmal. Zur ersten Frage:

                  Wenn ich die Funktion ausführe, liest er zuerst das Verzeichnis ./ aus. Also dasjenige, in welchem ja die index.php liegt. Er nimmt alle und schreibt diese in ne DB. Dann holt er wieder (Rekursion) mit get_dirc("$dir/$datei") das unterverzeichnis und liest wiederum alles aus und schreibts in die DB. Er merkt ja dank der If-Schleife -> jetzt ist es KEIN Directory (die ELSE-Anweisung) und macht von dem file die md5-checksum. Und diese gibt den namen mit $datei an.

                  Ich seh net ganz durch wie und wo ich angeben soll dass ichgrad in nem Unterverzeichnis bis. Ich habs bei der Else-Anweisung mit dem probiert:

                  PHP-Code:
                  md5_file("$dir/$datei"); 
                  Ich komm nimmer weiter. Keine Ahnung was machen :S

                  KAnnst mir net mehr auf die Sprünge helfen?

                  @ Tobiaz: Es durchforstet ja die Subdirs, sonst würden die auch net in die DB geschrieben werden. Die Checksum's der Files in Unterordnern werden einfach nicht gemacht. :s

                  mfg

                  Luca

                  Kommentar


                  • #10
                    Ok! Nun werden die Checksummen auch von den Dateien in Unterordnern gebildet.

                    Jetzt schreibt es mehrere male . und .. in die DB!

                    Und ich bringts einfach net fertig dass diese nicht hineingeschrieben werden.

                    Im ersten Durchlauf im Root (./) gibts kein Problem.

                    Sobald man in einem Unterordner ist werden diese . und .. als normale Dateien, und nicht als Verzeichnisse angeschaut. :S

                    Wie krieg ich das weg?

                    Kommentar


                    • #11
                      So, hat sich erledigt.

                      Habs geschafft dass diese . und .. nicht mehr in die DB geschrieben werden, und dass alle Checksummen gebildet werden!

                      Danke an euch und noch nen schönen Abend!

                      Gruss

                      Luca

                      Kommentar

                      Lädt...
                      X