zwerg: Verzeichnis auslesen und nur Ordner anzeigen lassen

Glück auf!

Ich will in einem Script für eine Bildergalerie alle Ordner eines Verzeichnisses anzeigen lassen und nicht die dort befindlichen Dateien und auch nicht die "." und ".." für die übergeordneten Verzeichnisse.

Bisher habe ich nur "." und ".." wie folgt ausgeschlossen:

  
$dir = opendir ("../verzeichnis");  
while ($ordner = readdir($dir)) {  
     if ($ordner != "." && $ordner != "..") {  
          echo $ordner  
     }  
}  
closedir($dir);  

Dann habe ich aber noch das Problem, dass ich auch Dateien angezeigt bekomme.

Jetzt habe ich wie folgt versucht nur die Ordner anzeigen zu lassen:

  
$dir = opendir ("../verzeichnis");  
while ($ordner = readdir($dir)) {  
     if (is_dir($ordner)) {  
          echo $ordner  
     }  
}  
closedir($dir);  

Ergebnis: Nur "." und ".." wird mir angezeigt, obwohl sich Ordner (Unterverzeichnisse) in dem Verzeichnis befinden.

Kann mir jmd. sagen, was ich falsch mache oder noch besser, wie ich das richtig machen kann?

Freundliche Grüße

zwerg Alex

  1. Hi,

    Jetzt habe ich wie folgt versucht nur die Ordner anzeigen zu lassen:

    $dir = opendir ("../verzeichnis");
    while ($ordner = readdir($dir)) {
         if (is_dir($ordner)) {
              echo $ordner
         }
    }
    closedir($dir);

    
    >   
    > Ergebnis: Nur "." und ".." wird mir angezeigt, obwohl sich Ordner (Unterverzeichnisse) in dem Verzeichnis befinden.  
      
    . und .. gibt's in jedem Verzeichnis - also interessieren sich diese beiden auch nicht dafuer, ob der Pfad, den du bei is\_dir (nicht) angibst, stimmt.  
      
    Wenn $order aber "xyz" enthaelt, und das \*aktuelle\* Verzeichnis keinen solchen Ordner enthaelt, dann gibt is\_dir auch kein true. Wuerdest du den Namen des Verzeichnisses, aus dem du wirklich ausliest, noch davorsetzen (Slash nicht vergessen), koennte das anders aussehen ...  
      
    MfG ChrisB
    
    1. Hello,

      $dir = opendir ("../verzeichnis");
      while ($ordner = readdir($dir)) {
           if (is_dir($ordner)) {
                echo $ordner
           }
      }
      closedir($dir);

      
      > >   
      > > Ergebnis: Nur "." und ".." wird mir angezeigt, obwohl sich Ordner (Unterverzeichnisse) in dem Verzeichnis befinden.  
      >   
      > . und .. gibt's in jedem Verzeichnis - also interessieren sich diese beiden auch nicht dafuer, ob der Pfad, den du bei is\_dir (nicht) angibst, stimmt.  
      >   
      > Wenn $order aber "xyz" enthaelt, und das \*aktuelle\* Verzeichnis keinen solchen Ordner enthaelt, dann gibt is\_dir auch kein true. Wuerdest du den Namen des Verzeichnisses, aus dem du wirklich ausliest, noch davorsetzen (Slash nicht vergessen), koennte das anders aussehen ...  
        
      Und der Vergleich ist schlichtweg falsch!  
        
        > > while ($ordner = readdir($dir))  
        
      würde sofort aufhören zu lesen, wenn eine Datei Namens 0 auftaucht. Dieser Name ist aber unter Linux (wohl auch unter Win\_X?) zulässig.  
        
         while (false !== ($ordner = readdir($dir)))  
        
      wäre daher passender  
        
      Außerdem würde ich die Lektüre von [libk:http://de2.php.net/manual/en/function.glob.php] empfehlen.  
        
        
        
        
      Liebe Grüße  
        
      Tom vom Berg
      
      -- 
      Nur selber lernen macht schlau  
      
      
    2. Glück auf ChrisB und Tom!

      Ich darf mich - mal wieder - bei euch bedanken und tu das gerne.

      Mit

        
      $dir = opendir ("/verzeichnis");  
      while ($ordner = readdir($dir)) {  
           if (is_dir("/verzeichnis/" . $ordner) && $ordner != "." && $ordner != "..") {  
                echo $ordner  
           }  
      closedir($dir);  
      
      

      klappt es jetzt, wie gewünscht :-)

      @Tom: Deine Hinweis (0 ungleich FALSE) werde ich auch noch umsetzen, obwohl ich wohl nie nen Ordner namens 0 erstellen werde. Aber das nur Ordner angezeigt werden ist ja auch nur um alle Eventualitäten auszuschließen, da eigentlich nur Ordner im Verzeichnis sind.
      Deinen Link werde ich aber nicht _jetzt_ lesen, da auf englisch und an ChrisB gerichtet ;-)

      Also nochmal DANKE an euch.

      Freundliche Grüße

      zwerg Alex