Unterordner auslesen

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Unterordner auslesen

    hoi,

    wie kann ich mit PHP Unterordner auslesen?
    Ich möchte mein Script mehrsprachig laufen lassen und habe dazu für jede Sprache einen Unterordner angelegt.

    Jetzt soll der User bei der Installation eine Sprache per Dropdownfeld auswählen können. Wenn ich also die Ordner Deutsch,Englisch und Spanisch habe,soll im Dropdownfeld "Deutsch Englisch Spanisch" stehen.

    wie geht das?

    Folgendes habe ich versucht:

    PHP Code:
    $filelist = array();
    $dir = @opendir("../language"));

    while ((
    $file readdir($dir)) !== false
    {
    $filelist[] = $file;

    closedir($dir);
    print 
    $filelist
    doch ich bekomme einen Parse Error

  • #2
    Re: Unterordner auslesen

    Original geschrieben von Johny
    doch ich bekomme einen Parse Error
    himmel, dass manche leute nicht mal so einen scheiß alleine finden können *seufz*

    PHP Code:
    $dir = @opendir("../language")); 
    wie-viele-klammern-du-aufmachen?
    und-wie-viele-klammern-du-wieder-zumachen?
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Comment


    • #3
      nunja,
      PHP Code:
      $dir = @opendir("../language"); 
      ist besser

      //edit: mist zuspät

      Comment


      • #4
        hoi,

        ob habs jetzt!

        nur noch ein kleiner Schönheitsfehler:

        Da ich nicht will,dass man die Ordnerstruktur einfach online erkennen kann,hab ich im Sprachordner eine leere index.htm erstellt!

        Wie kann ich erreichen,dass diese nicht mit ausgelesen wird sondern nur die Unterordner?

        Beispiel so siehts jetzt aus:

        Ordner: Sprache
        Inhalt: eine leere index.htm soiwe der Unterordner "Deutsch"
        Anzeige: ...index.htmdeutsch

        und so soll es aussehen:

        Ordner: Sprache
        Inhalt: eine leere index.htm soiwe der Unterordner "Deutsch"
        Anzeige: deutsch

        Comment


        • #5
          is_dir() vielleicht?
          Die Zeit hat ihre Kinder längst gefressen

          Comment


          • #6
            ok habs mal versucht....das Ergebnis ist aber leicht verwirrend:

            mit dem Code hier:
            PHP Code:
            $filelist = array();
            $dir = @opendir("../language/");
            $file '';
            while ((
            $file readdir($dir)) !== false
            {
                
            $filelist[] = $file;
                if(
            is_dir($file))
                {
                    echo 
            $file;
                }
                else
                {
                    echo 
            "Keine Lang-Ordner gefunden!";
                }
            }
            closedir($dir); 
            wird folgendes Ausgegeben:

            ...Keine Lang-Ordner gefunden!Keine Lang-Ordner gefunden!
            ändere ich die Zeile aber so ab:

            if(!is_dir($file))

            kommt:

            Keine Lang-Ordner gefunden!Keine Lang-Ordner gefunden!index.htmlang_english
            warum?

            nur lang_english reicht mir völlig

            Comment


            • #7
              hmm,

              du mußt bei is_dir() den pfad angeben, nicht nur die datei?
              Die Zeit hat ihre Kinder längst gefressen

              Comment


              • #8
                sooo geht doch geht doch :-D

                hab mir mal n Snippet gesucht...
                PHP Code:
                function show_all_files($ordner$links 0$sub FALSE)
                {
                    
                $handle opendir($ordner);
                    while (
                $file readdir ($handle))
                    {
                        if(
                $file != "." && $file != "..")
                        {
                            if(
                is_dir($ordner."/".$file))
                            {
                                echo 
                $file;
                                echo 
                '<br/>';
                                
                show_all_files($ordner."/".$file$links+30TRUE);
                            }
                        }
                    }
                    
                closedir($handle);
                }
                show_all_files("./phpbbtest/language"); 
                das einzige was mich daran noch stört ist folgendes:

                bei folgender Ordnerstruktur:

                auszulesendesVerzeichnis/Deutsch/4mail
                auszulesendesVerzeichnis/Englisch/4mail

                wird folgendes ausgegeben:

                Deutsch
                Englisch
                4mail
                4mail

                wie bekomm ich die beiden "4mail"'s noch weg,also dass nur die erste Ebene ausgelesen wird?

                Comment


                • #9
                  du siehst, dass du in show_all_files die funktion show_all_files selbst nochmal aufrufst?
                  das nennt sich rekursion und wenn du diesen aufruf rausnimmst, solltest du die unterordner nicht mehr ausgegeben bekommen
                  Ich denke, also bin ich. - Einige sind trotzdem...

                  Comment


                  • #10
                    Original geschrieben von Johny
                    wie bekomm ich die beiden "4mail"'s noch weg,also dass nur die erste Ebene ausgelesen wird?
                    indem du den Rekursionsaufruf in der Funktion auskommentiert.

                    Comment


                    • #11
                      jo das wars!

                      vielen Dank

                      Comment


                      • #12
                        ok eine weitere Frage noch:

                        da ich ja jetzt die Unterordnernamen habe,muss ich bei meinem Installscript natürlich eine Dropdownbox anlegen,welche Sprache standardmäßig verwendet werden soll.

                        Frage: Wie fülle ich eine Dropdownbox mit den ausgegebenen Unterordnern?

                        Comment


                        • #13
                          2 Möglichkeiten

                          1. nicht elegant, nicht ratsam, aber eben eine Möglichkeit, nämlich:
                          -> du baust die Fkt. um, anstatt einfach echo $file; könntest du hier die html-Ausgabe für dein select-Box einsetzen. Nachteil: die Funktion ist nur bei Select-Boxen einsetzbar.

                          2. anstatt direkt auszugeben speicherst du die eingelesenen Daten in Array und gibst als return-Wert zurück. Dann kannst du das Array durchlaufen und entsprechend die HTML-Ausgabe machen. Vorteil: die Fkt. ist immer noch universell einsetzbar.

                          Comment


                          • #14
                            ok habs mal erfolglos mit nem Array versucht...

                            PHP Code:
                            function select_lang($langfolder$links 0$sub FALSE)
                            {
                                
                            $handle opendir($langfolder);
                                while (
                            $file readdir($handle))
                                {
                                    if(
                            $file != "." && $file != "..")
                                    {
                                        if(
                            is_dir($langfolder."/".$file))
                                        {
                                            
                            $langfile = array();
                                            
                            $langfile['lang'] = $file;
                                            echo 
                            "<select name=language><option>$langfile[lang]</option>";
                                            echo 
                            '<br/>';
                                            echo 
                            $file;
                                        }
                                    }
                                }
                                
                            closedir($handle);
                            }
                            select_lang("../language"); 
                            doch da kommt nur Unsinn raus...wenn ich einen Unterordner hab kommt der ins Dropdownfeld...der zweite steht dann aber als text daneben...

                            Comment


                            • #15
                              [ ] du weisst was eine Schleife macht
                              [ ] du weisst wie eine Select-Box HTML-mässig aussieht
                              [ ] du weisst was echo macht
                              [ ] du weisst wie man ein Array definiert und mit Werten füllt

                              Bitte ankreuzen.


                              [x] bitte Grundwissen über das Zusammenspiel PHP/HTML nachholen.

                              Comment

                              Working...
                              X