Lister les dossier et non le contenu

zuddap
Messages postés
71
Date d'inscription
mardi 23 septembre 2008
Statut
Membre
Dernière intervention
20 juillet 2010
- 1 déc. 2009 à 11:36
kohntark
Messages postés
3706
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
- 1 déc. 2009 à 19:22
bonjour a tous,

voila je cherche a lister tous les dossiers qui sont dans un dossier(parrent) ou il y a également des fichiers. Comme il est dit dans le sujet je cherche simplement a affichier la liste des dossiers, mon code pour l'instant et le suivant :

$dir = opendir("../gestion fichier/");
while($file = readdir($dir))
{
if($file="." ){
echo " ";}
else{
echo "$file\n

";}
}
closedir($dir);

Si je retire le "IF" le code m'affiche les dissier :-) mais également les fichiers :-(. Avec le IF je n'est plus rien. Quelqu'un aurait-il une idée ?

cordialement zuddap!

13 réponses

davidcian
Messages postés
186
Date d'inscription
vendredi 18 novembre 2005
Statut
Membre
Dernière intervention
19 décembre 2009
1
1 déc. 2009 à 12:35
Essais ca:

$dir = opendir("../gestion fichier/");
while($file = readdir($dir))
$dossier = explode(".", $file)
if($dossier[1]=="")
echo "$file\n";	
}
closedir($dir); 


Explication, si ne nom du fichier ou dossier comporte un point soit une extension je ne l'affiche pas.

Pas testé tu me diras si ca marche

Az
0
zuddap
Messages postés
71
Date d'inscription
mardi 23 septembre 2008
Statut
Membre
Dernière intervention
20 juillet 2010

1 déc. 2009 à 12:44
ok sa marche super merci a toi davidcian ! il y a juste une petite erreur dans ton code tu a oublié l'accolade d'ouverture du while voila je met le code corrigé sa peut toujour servir pour une autre personne et encore merci !
le code:

$dir = opendir("../gestion fichier/");
while($file = readdir($dir))
{
$dossier = explode(".", $file);
if($dossier[1]==""){
echo "$file\n";}
}
closedir($dir);
0
davidcian
Messages postés
186
Date d'inscription
vendredi 18 novembre 2005
Statut
Membre
Dernière intervention
19 décembre 2009
1
1 déc. 2009 à 12:48
En principe les accolades ne sont pas nécessaire car la condition et juste au dessus et elle est toute seul.

Si il y avait plusieurs conditions ca aurait été nécessaire ne effet ;)

Mais dans le cas présent ca doit marcher essais ;)

Az
0
davidcian
Messages postés
186
Date d'inscription
vendredi 18 novembre 2005
Statut
Membre
Dernière intervention
19 décembre 2009
1
1 déc. 2009 à 12:50
oups dsl ha oui j'avais pas qu'il manqué celle de la boucle de début en effet ^^

Az
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
zuddap
Messages postés
71
Date d'inscription
mardi 23 septembre 2008
Statut
Membre
Dernière intervention
20 juillet 2010

1 déc. 2009 à 13:04
oui mais c'est pas grave vu que sa se voit vite, tu saurais comment faire pour ne pas affiché . et .. et permette de remonté dans l'arborésence ? car j'ai mis une condition mais elle ne fait rien sans abusé de ton savoir et de ton temps ! merci d'avance

$dir = opendir("../gestion fichier/");
while($file = readdir($dir))
{
$dossier = explode(".", $file);

if($dossier[1]=="")
{
if($dossier[1]=="." AND $dossier[1]=="..")
{
exit;
}
else
{
echo "$file
";
}
}
}
closedir($dir);
0
zuddap
Messages postés
71
Date d'inscription
mardi 23 septembre 2008
Statut
Membre
Dernière intervention
20 juillet 2010

1 déc. 2009 à 13:09
dsl du dérangement j'ai réusi mais en tous cas merci pour ton aide ! Az
0
davidcian
Messages postés
186
Date d'inscription
vendredi 18 novembre 2005
Statut
Membre
Dernière intervention
19 décembre 2009
1
1 déc. 2009 à 13:20
Essais ca, mais sans aucune garantis...

$dir = opendir("../gestion fichier/");
while($file = readdir($dir)){
$dossier = explode(".", $file);
if(($dossier[1]=="")&&($file != "..")&&($file != ".")){
echo "$file 
";
}
}
closedir($dir);


Az
0
kohntark
Messages postés
3706
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
30
1 déc. 2009 à 13:37
Salut,

Tu pourrais également utiliser la SPL :
isDir()) echo $machin->getBaseName().'
';
?>


Cordialement,


Kohntark -
0
neigedhiver
Messages postés
2480
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
18
1 déc. 2009 à 14:38
Salut,

Petit correction du code de Kohntark (excuse moi d'être désolé de te demander pardon de me permettre... s'il te plaît...)
isDir() && !$machin->isDot()) echo $machin->getBaseName().'
';
?>

Histoire de ne pas prendre . et .. ... (les 3 points sont des points de suspension)

Par ailleurs, je me permets également d'alerter davidcian et zuddap : cette manière de faire (avec opendir() et readdir())peut être considérée comme obsolète, mais surtout, la syntaxe n'est pas correcte et peut amener des erreurs. Je vous invite à lire la doc de PHP concernant la fonction readdir() pour mieux comprendre pourquoi. En gros, si un fichier porte le nom "0" (le chiffre zéro, sans extension) la boucle s'arrêtera alors qu'il y a peut-être encore des résultats à lire. Utiliser la SPL et DirectoryIterator ne laisse pas de place pour l'erreur.

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
0
zuddap
Messages postés
71
Date d'inscription
mardi 23 septembre 2008
Statut
Membre
Dernière intervention
20 juillet 2010

1 déc. 2009 à 15:09
ok merci pour ces précision "neige" mais dans mon cas c'est l'utilisateur qui créra les dossiers donc pas de risque mais sa coute rien de prendre les bonne manière des maintenant!!
0
kohntark
Messages postés
3706
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
30
1 déc. 2009 à 18:37
@neige :
Utiliser la SPL et DirectoryIterator ne laisse pas de place pour l'erreur.

... la preuve que non (mon oubli de !isDot())

Cordialement,

Kohntark -
0
neigedhiver
Messages postés
2480
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
18
1 déc. 2009 à 19:08
Je ne me souviens pas t'avoir autorisé à me contredire... L'ai-je fait ?

:-p

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
0
kohntark
Messages postés
3706
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
30
1 déc. 2009 à 19:22
Oups, sorry a lot beaucoup Neige, j'ai omis, dans une précipitation semblable à celle de mon post de 13h37, la politesse requise ici.

Pour paraphraser deux autres de tes posts, je copie à l'infini :
<?php
$sEndOfTheWorld = 2012;
$sPlatesExcuses = 'excuse moi d\'être désolé de te demander pardon de me permettre... s\'il te plaît...';
while ($sPlatesExcuses <= $sEndOfTheWorld) echo $sPlatesExcuses;
?>


bonne soirée à toi,


Kohntark -
0