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 3705 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 3705 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 19
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 3705 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 19
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 3705 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
Rejoignez-nous