Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/03/2011, 17h30   #1
Futur Membre du Club
 
Inscription : mai 2009
Messages : 224
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 224
Points : 18
Points : 18
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 :
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..
groskanel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2011, 17h34   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 465
Points : 8 465
utilise RecursiveDirectoryIterator, et fait un isDir()
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2011, 18h20   #3
Futur Membre du Club
 
Inscription : mai 2009
Messages : 224
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 224
Points : 18
Points : 18
Voila ce que ca donne :

Code :
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.
groskanel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2011, 18h40   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 465
Points : 8 465
il te renvoie un SplFileInfo dans $object, tu vas surement trouver ton bonheur
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2011, 18h42   #5
Futur Membre du Club
 
Inscription : mai 2009
Messages : 224
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 224
Points : 18
Points : 18
heu.. la tu me parles chinois !!
groskanel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2011, 19h06   #6
Futur Membre du Club
 
Inscription : mai 2009
Messages : 224
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 224
Points : 18
Points : 18
"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 :
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/>';
}
?>
groskanel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2011, 19h11   #7
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 465
Points : 8 465
euh... fais un echo, attention c'est la base du PHP ça, faut pas juste faire du copier-coller sans comprendre
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2011, 19h14   #8
Futur Membre du Club
 
Inscription : mai 2009
Messages : 224
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 224
Points : 18
Points : 18
tu veux que je fasse un echo de quoi ?
groskanel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2011, 19h18   #9
Futur Membre du Club
 
Inscription : mai 2009
Messages : 224
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 224
Points : 18
Points : 18
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..
groskanel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2011, 19h18   #10
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 465
Points : 8 465
Citation:
Envoyé par groskanel Voir le message
tu veux que je fasse un echo de quoi ?
pourquoi avoir fait var_dump ???
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2011, 19h20   #11
Futur Membre du Club
 
Inscription : mai 2009
Messages : 224
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 224
Points : 18
Points : 18
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..
groskanel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2011, 19h23   #12
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 465
Points : 8 465
pourquoi avec fais splfileobject, $object est deja un splfileobject...
le if sans accolade prendre juste la prochaine ligne
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2011, 19h32   #13
Futur Membre du Club
 
Inscription : mai 2009
Messages : 224
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 224
Points : 18
Points : 18
ok.. donc :

Code :
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 ?
groskanel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2011, 19h34   #14
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 465
Points : 8 465
Citation:
Envoyé par stealth35 Voir le message
le if sans accolade prendre juste la prochaine ligne
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2011, 19h35   #15
Futur Membre du Club
 
Inscription : mai 2009
Messages : 224
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 224
Points : 18
Points : 18
parfait !!

Merci !!!

Code :
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/>';
    }
}      
?>
groskanel est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h18.


 
 
 
 
Partenaires

Hébergement Web