IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

lecture dossier et sous-dossier


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 265
    Points : 53
    Points
    53
    Par défaut lecture dossier et sous-dossier
    Bonjour

    Je cherche un moyen pour afficher tout les sous-dossiers contenu dans un repertoire, sans afficher les fichiers..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?php
    $dir = "../fichiers/";
    if (is_dir($dir)) {
        if ($dh = opendir($dir)) {
            while (($file = readdir($dh)) !== false) {
                echo "$file <br/>";
            }
            closedir($dh);
        }
    }
    ?>
    cela m'affiche dossiers et fichiers, et ne rentre pas dans les sous-dossiers présent pour en afficher le contenu (dossiers)

    Est-il possible de faire en sorte qu'il n'affiche que les sous-dossiers, et qu'il rentre dans chaque dossier et sous-dossier pour afficher la liste des repertoires présent ?

    Merci..

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    utilise RecursiveDirectoryIterator, et fait un isDir()

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 265
    Points : 53
    Points
    53
    Par défaut
    Voila ce que ca donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?php
    $path = realpath('../fichiers/0a/');
    $objects = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path), RecursiveIteratorIterator::SELF_FIRST);
    foreach($objects as $name => $object){
        if(is_dir($name))
        echo $name;
        echo '<br/>';
    }
    ?>
    par contre la du coup il m'affiche le chemin complet du fichier, existe t'il un moyen de n'avoir que le nom du fichier sans le chemin ?

    Merci.

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    il te renvoie un SplFileInfo dans $object, tu vas surement trouver ton bonheur

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 265
    Points : 53
    Points
    53
    Par défaut
    heu.. la tu me parles chinois !!

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 265
    Points : 53
    Points
    53
    Par défaut
    "dans spIfileInfo il y a bien pour afficher le chemin complet ou le chemin absolu, mais pas juste le nom de fichier.."

    J'ai rien dis..

    il y a bien mais par contre ca me donne ca :

    string(2) "0b"

    un moyen pour virer string(2) " " et ne garder que le nom ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    $path = realpath('../fichiers/0a/');
    $objects = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path), RecursiveIteratorIterator::SELF_FIRST);
    foreach($objects as $name => $object){
        if(is_dir($name))
        $info = new SplFileInfo("$name");
        var_dump($info->getFilename());
        echo '<br/>';
    }
    ?>

  7. #7
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    euh... fais un echo, attention c'est la base du PHP ça, faut pas juste faire du copier-coller sans comprendre

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 265
    Points : 53
    Points
    53
    Par défaut
    tu veux que je fasse un echo de quoi ?

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 265
    Points : 53
    Points
    53
    Par défaut
    et ca ne fonctionne pas mon truc ..

    si il a cinq fichiers dans le dossier, il m'affiche le nom cinq fois, si il y'en a 20 pareil..

  10. #10
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par groskanel Voir le message
    tu veux que je fasse un echo de quoi ?
    pourquoi avoir fait var_dump ???

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 265
    Points : 53
    Points
    53
    Par défaut
    heu effectivement sans le var_dump ca marche mieux, mais j'ai toujours ce souci de nom qui s'affiche a priori autant de fois qu'il y a de fichiers a l'interieur..

  12. #12
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    pourquoi avec fais splfileobject, $object est deja un splfileobject...
    le if sans accolade prendre juste la prochaine ligne

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 265
    Points : 53
    Points
    53
    Par défaut
    ok.. donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    $path = realpath('../fichiers/00-GROUP COMMERCIAL DOCS/');
    $objects = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path), RecursiveIteratorIterator::SELF_FIRST);
    foreach($objects as $name){
        if(is_dir($name))
        echo($name->getFilename());
     
    }      
    ?>
    me donne ce que je veux.. si je fait un echo<br/> juste en dessous de l'echo $name il saute autant de ligne que de fichiers présent, c'est normal ?

  14. #14
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    le if sans accolade prendre juste la prochaine ligne

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 265
    Points : 53
    Points
    53
    Par défaut
    parfait !!

    Merci !!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    $path = realpath('../fichiers/00-GROUP COMMERCIAL DOCS/');
    $objects = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path), RecursiveIteratorIterator::SELF_FIRST);
    foreach($objects as $name){
        if(is_dir($name)){
        echo($name->getFilename());
        echo '<br/>';
        }
    }      
    ?>

Discussions similaires

  1. Comment lister dossiers et sous dossiers
    Par sword999 dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 11/08/2006, 11h36
  2. Lister sous-dossiers d'un dossier défini
    Par mathieumg dans le forum C
    Réponses: 10
    Dernier message: 19/07/2006, 10h20
  3. lister dossier et sous dossier
    Par wabit dans le forum C
    Réponses: 6
    Dernier message: 06/06/2006, 16h48
  4. [VB6]lister les dossiers et sous dossier
    Par Jacen dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 28/04/2006, 08h06
  5. Réponses: 4
    Dernier message: 25/04/2006, 16h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo