Prüfen ob ein Ordner vorhanden ist.

  • Moin,


    hab da mal eine Frage.
    Ich habe aktuell eine foreach - Schleife die mir jede Datei und jeder Ordner angezeigt.


    Diese werden dann ausgegeben in einer Variable.



    Kann man überprüfen ob in diesem Verzeichnis ein Ordner drin ist? Möchte gerne das Ordner anders aufgelistet werden, also ganz normale Dateien.

    Hab das ganze schon mit is_dir versucht. Aber dort zeigt er mir nichts an.




    PHP
    <?php 
        $verzeichnis = "../../../../../../home/share/Mitarbeiter/";
                                                                          
        foreach(scandir($verzeichnis) as $ausgabeDatei) {
            echo is_dir($ausgabeDatei);
    ?>



    Hat jemand zufällig einen Tipp oder eine Idee?



    LG

  • Warum geht is_dir den nicht ?

    Das sollte schon gehen.

    Wenn ich dein Code so teste, wie du es geschrieben hast, bekomme ich beim Ordner eine "1" zurück für true.

    Das ist das was is_dir auch machen soll

  • Hey,


    ich empfehle dir $ausgabeDatei mit der Funktion var_dump() mal zu dumpen und zu schauen, was dir da zurückgegeben wird.


    Ich habe es eben auch mal geprüft und es funktioniert. Hier mein Beispielcode zum dumpen:

    PHP
    <?php
    
        $verzeichnis = "./"; // füge hier den Pfad ein
                                                                          
        foreach(scandir($verzeichnis) as $ausgabeDatei) {
            $isFolder = is_dir($ausgabeDatei) ? "ja" : "nein";
           
            echo "Ist " .  $ausgabeDatei . " ein Ordner? " . $isFolder;
            echo "<br>";
        }

    Schöne Grüße,
    Stef

  • Danke für die Antworten.

    Wollte eigentlich nur überprüfen wie viele Ordner in meinem Verzeichnis sind. Und wenn ein Ordner vorhanden ist, möchte ich den in einer Tabelle als Ordner Markieren und normale Dateien ganz normal als Datei Markieren.


    Meine mit Markieren eine Spalte in der Tabelle


    zb. Typ = Ordner oder Datei

  • Denk dran das du noch . und .. hast.

    Nein, da der Pfad ($verzeichnis) fehlt.

    Wenn er im Pfad zurück geht, meinst du oder ( .../../)

    Im gleichen Ordner sollte das doch laufen richtig ?

  • Denk dran das du noch . und .. hast.

    Wenn er im Pfad zurück geht, meinst du oder ( .../../)

    Im gleichen Ordner sollte das doch laufen richtig ?

    Leider erkennt er bei mir keinen Ordner, wenn ich meinen Pfad nutze. Obwohl ein Order existiert.

  • Kann ich nicht viel zu sagen.

    Bin auch noch Anfänger in Php.

    Ich habe mein Code getestet und bei mir läuft es so.

    Aber..

    Nein, da der Pfad ($verzeichnis) fehlt.

    Das könnte das Problem sein.

    Ich habe das im gleichen Ordner getestet und nicht wie du es vor hast mit paar Ebenen zurück.

    Ich denke mal das es in deinem Fall so aussehen sollte

    Könnte aber auch falsch sein

  • Das hat jetzt geklappt ^^


    Gibt es auch noch die Möglichkeit, das Ordner immer ganz oben in der Tabelle sind? Aktuell sind die nur irgendwo in der Tabelle.

  • Jetzt sind wir da angekommen, wo ich zwar Lösungen finde, aber nicht weiß, ob es richtig oder auch leichter geht.

    Bei mir wird so erst die Ordner alphabetisch angezeigt , und dann die Dateien.

    Da soll mal ein PHP Profi was zu sagen , ob es anders und einfacher geht

  • Ich bin ein Stück weit davon entfernt entfernt, ein PHP-Profi zu sein, aber ich würde es ein wenig anders aufziehen:


    Als erstes glob statt scandir verwenden, dann ist die Sortierung schon per Default gegeben.


    Dann würde ich nur eine Schleife verwenden und darin das HTML für Ordner und Dateien ohne echo in zwei Variablen anlegen.

    Deren Inhalt dann am Schluss ausgeben, erst Ordner und dann Dateien.


    Würde dann so aussehen (ungetestet):

  • Das in den Variablen zu Speichern hatte ich auch erst vor.

    Hatte da aber die Probleme mit dem Sortieren (was bei glob(() anscheint nicht ist? ).

    Dann kam ich auf die Idee mit Array und sort();


    Hatte dein Code mal gerade getestet und es kommt die gleichen Ergebnisse raus wie bei mir.

    Deine Variante scheint mir dann auch die Sinnvollere.


    Man könnte jetzt noch das im Raum schmeißen. PHP Library (SPL)

    Ist aber wahrscheinlich unnötig in diesen Fall.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!