Ordner auslesen

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

  • Ordner auslesen

    Ich habe folgende Ordner Struktur:
    Ordner1/Unterordner1
    Ordner1/Unterordner2
    Ordner1/Unterordner3

    Ordner2/Unterordner1
    Ordner2/Unterordner2
    Ordner2/Unterordner3

    Ordner3/Unterordner1
    Ordner3/Unterordner2
    Ordner3/Unterordner3

    In Ordner2 liegt mein Script. Das soll die obige Ordnerstruktur so anzeigen. Wo liegt der Fehler in meiner Funktion? Das Array ist immer leer.

    PHP-Code:
    $array = array();
    $ordner $array;

    function 
    readordner($dirname,$ordner) {
     if (
    $dirname != "..") {
       
    array_push($ordner$dirname); 
     }
     
    $handle=opendir ($dirname);

     while (
    $dirname readdir ($handle)) {

       if ((
    is_dir($dirname)) and ($dirname != ".") and ($dirname != "..")) {
         
    $ordner readordner($dirname$ordner);
       }

     }
     
    closedir($handle);

     return 
    $ordner;
                           }

    $ordner readordner('..'$ordner); 
    Zuletzt geändert von Tpercon; 22.08.2003, 15:06.

  • #2
    .. ist hier schon x mal in ähnlicher Weise beantwortet worden, einfach suchfunktion anwerfen ...

    7-/anz

    Kommentar


    • #3
      Über die Suche habe ich aber nichts gefunden, was mir meinen Fehler erklärt, nur die Funktionsweise von ReadDir und sowas.

      Kommentar


      • #4
        was doch eingenlichauch reichen sollte...

        readdir arbeit mit dem akteullen verzeichnis, du öffnest aber nicht das aktuelle verzeichnis zum lesen sondern das übergeordnete, dass musst du readdir auch sagen
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          Deshalb übergebe ich doch .. der Funktion?!

          Kommentar


          • #6
            ja, aber nach $dirname=readdir($handle) steht da blubb drin und nicht ../blubb
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              OK, das stimmt.

              Wie baue ich das ganze rekursiv auf, dass es funktioniert?

              Kommentar


              • #8
                PHP-Code:
                function read_dir($folder)
                {
                    
                $dir opendir($folder);
                    while (
                $file=readdir($dir))
                    {
                        
                $realfile=realpath($folder).DIRECTORY_SEPARATOR.$file;
                        if (
                is_dir($realfile)  and $file!='.' and $file!='..')
                        {
                            
                $array[$file]=array('complete' => $realfile);
                            
                $array[$file]['content']=read_dir($realfile);
                        }
                    }
                    
                closedir($dir);
                    return 
                $array;

                probier das mal so
                Zuletzt geändert von mrhappiness; 22.08.2003, 16:07.
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar


                • #9
                  Hm, du hast das return auserhalb der Funktion
                  Und wie wird da das array mit hinein übergeben?

                  Kommentar


                  • #10
                    so, nu isses in der funktion
                    PHP-Code:
                    function read_dir($folder)
                    {
                        
                    $dir opendir($folder);
                        while (
                    $file=readdir($dir))
                        {
                            
                    $realfile=realpath($folder).DIRECTORY_SEPARATOR.$file;
                            if (
                    is_dir($realfile)  and $file!='.' and $file!='..')
                            {
                                
                    $array[$file]=array('complete' => $realfile);
                                
                    $array[$file]['content']=read_dir($realfile);
                            }
                        }
                        
                    closedir($dir);
                        return 
                    $array;

                    ausprobieren und ergebnis mit print_r ausgeben lassen

                    welches array soll ich wo "reingeben" ? sollte so auch gehen
                    Ich denke, also bin ich. - Einige sind trotzdem...

                    Kommentar


                    • #11
                      Das ganze ist irgendwie ne Endlosschleife, da ich ein Maximum execution time of 5 seconds exceeded beim Ausführen bekomme.

                      Das array bekomme ich mit
                      PHP-Code:
                      $ordner read_dir('..'); 
                      ?

                      Kommentar


                      • #12
                        hol dir nochmal den code von oben, der geht auf jeden fall, hab ich eben nochmal probiert

                        evtl. is was schief gelaufen beim kopieren/ersetzen/einfügen ( mischmasch aus alt und neu)
                        Ich denke, also bin ich. - Einige sind trotzdem...

                        Kommentar


                        • #13
                          OK, es geht wirklich jetzt. Danke dir.
                          Nur ich verstehe nicht ganz die Struktur, wie bekomme ich das in die Aufzählungsform? Wie lese ich das aus? Wie muß die Schleife dazu aussehen?

                          Kommentar


                          • #14
                            PHP-Code:
                            echo '<pre>';
                            print_r(read_dir('..'));
                            echo 
                            '</pre>'
                            so siehst du sehr schön die hierarchie find ich

                            auslesen überlass ich dir erstmal *g*

                            kannst das ja auch rekursiv machen wenn du willst (gleiches prinzip wie einlesen)

                            Änderung:
                            PHP-Code:
                            return (isset($array)) ? $array false
                            jetzt prüfst du einfach ab, ob im index 'content' flase steht und wenn nicht gibt's da ein neues array...
                            Ich denke, also bin ich. - Einige sind trotzdem...

                            Kommentar


                            • #15
                              mach mal:

                              PHP-Code:
                              <?php
                              $folder 
                              "hier dein folder rein!";
                              echo 
                              "<pre>";
                              print_r(read_dir($folder));
                              echo 
                              "</pre>";
                              ?>
                              dann siehste die Struktur

                              Kommentar

                              Lädt...
                              X