Test si c'est un repertoire ou un fichier !!

rich25200 Messages postés 155 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 31 janvier 2008 - 24 juin 2005 à 00:12
cs_garfield90 Messages postés 388 Date d'inscription lundi 7 juillet 2003 Statut Webmaster Dernière intervention 10 février 2009 - 24 juin 2005 à 12:31
Bonjour,



Je comprends rien !! enfin bon si mais je sais pas pk il reagit comme ca....



Je vous explique j'ai du code pour tester si c'est un repertoire ou un
fichier je fais bien les choses je pense mais dans la boucle ou il faut
tester si c'est un repertoire ou un fichier... Pour LUI tout est un
repertoire meme si c'est un fichier..



Je vous donne le code :



//ouvre le lecteur cd

$chem = opendir($lecteurcd);

//nécessaire pour compter le nbre de ligne pour insertion

$nbrLign = 0;



//variable pour savoir si la ligne est colorié ou pas on va divier et savoir s'il est pair ou non

$colorie = 1;



//tant qu'il y a des fichiers

while (false !($dir readdir($chem)))

{

$nbrLign++;

print "dir : ".$dir."
";

//var_dump (is_file('c:/sxs/msxml4.cat'));



//si ce n'est pas un répertoire il enlève les extensions

if (!is_file($dir)) <-------------------------------------a ce moment la il va dans cette boucle que ca soit un repertoire ou pas !!! pk??????

{

print " reper
";

//je récupère l'info du fichier (extension...)

$exten = pathinfo ($dir);



// j'enlève l'extension

$file = basename ($exten["basename"],".".$exten["extension"]);



?><tr class="<?

// s'il n'y a pas de reste c'est pair

if ($colorie%2==0) { print 'EntrTab'; }

else { print ""; } ?>">



<td>



" type="text" id="nom"
value="<? print $file; ?>" size="30">


</td>

<td>



<textarea name="description<? print $nbrLign; ?>" cols="40"
rows="2" id="description<? print $nbrLign; ?>"
></textarea>


</td>

<td>





<select name="categorie<? print
$nbrLign; ?>" id="categorie<? print $nbrLign; ?>">


<? writeDropList ("select
nomcat from categorie order by nomcat asc", "nomcat") ?>

</select>




</td>

<td>



" type="checkbox"
id="controler<? print $nbrLign; ?>" value="oui">


</td>

</tr>

<?

$colorie++;

}



//sinon si c'est un repertoire je l'affiche

else <------------------------------------- 2ieme boucle

{ print "pas un repertoire
";

?><tr class="<?

// s'il n'y a pas de reste c'est pair

if ($colorie%2==0) { print 'EntrTab'; }

else { print ""; } ?>">


<td>
" type="text" id="nom<? print $nbrLign; ?>"
value="<? print $dir; ?>" size="30">


</td>

<td>



<textarea name="description<? print $nbrLign; ?>" cols="40"
rows="2" id="description<? print $nbrLign; ?>"
></textarea>


</td>

<td>





<select name="categorie<? print
$nbrLign; ?>" id="categorie<? print $nbrLign; ?>">


<? writeDropList ("select
nomcat from categorie order by nomcat asc", "nomcat") ?>

</select>


</td>

<td>



" type="checkbox"
id="controler<? print $nbrLign; ?>" value="checkbox">


</td>

</tr>

<? $colorie++;

}

}

closedir($chem);




merci de m'aider ca je ne comprend pas !!!!!

13 réponses

morpheus262 Messages postés 461 Date d'inscription mardi 27 avril 2004 Statut Membre Dernière intervention 16 février 2012
24 juin 2005 à 09:48
essaye en regardant directement si c un repertoire is_dir.
peut etre qu il interprete les repertoire comme des fichiers, mais un fichier ne peut pas etre un repertoire. a voir je sais pas trop comment php gere ca.


<HR>
On ne peut pas savoir tout faire, mais on peut tout apprendre avec du travail. Morpheus262

PS: Besoin d aide pour developper, besoin d un collaborateur pour faire votre site, contacter moi par mail
l
0
rich25200 Messages postés 155 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 31 janvier 2008
24 juin 2005 à 10:19
le prob si je met is_dir il me passe tout dans la deuxieme boucle c'est
a dire que c'est pas un repertoire !!! en fait il ne fait pas de
distinction entre un repertoire et un fichier !!! Il les prend tous
comme fichier !!



Pk?????
0
morpheus262 Messages postés 461 Date d'inscription mardi 27 avril 2004 Statut Membre Dernière intervention 16 février 2012
24 juin 2005 à 10:21
Ben je vois pas alors desolé, et tu sur que tu as des repertoire je suppose que oui lol. ensuite as tu bien un / a la fin de ton chemin je sais pas si ca peux influencer. desolé je vois pas.

<HR>
On ne peut pas savoir tout faire, mais on peut tout apprendre avec du travail. Morpheus262

PS: Besoin d aide pour developper, besoin d un collaborateur pour faire votre site, contacter moi par mail
l
0
rich25200 Messages postés 155 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 31 janvier 2008
24 juin 2005 à 10:40
oui tout est ok..... je sais pas pk il me prend tout en fichier quelqu'un a une idée ?
0

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

Posez votre question
cs_garfield90 Messages postés 388 Date d'inscription lundi 7 juillet 2003 Statut Webmaster Dernière intervention 10 février 2009
24 juin 2005 à 11:12
Voir ton autre post.



Au fait ca ne sert a rien de faire 2 post avec le meme sujet.



ton script dois etre du type



if (is_dir($file) )

{

operation sur fichier

}else{

alors c'est un fichier

}



normalement tu n'as pas besoin de teste si c'est un fichier, s'en sera forcement un !



fais attention aussi avec les fichier . et ..






"They are 10 sorts of persons whose understand binary and whose not"
0
morpheus262 Messages postés 461 Date d'inscription mardi 27 avril 2004 Statut Membre Dernière intervention 16 février 2012
24 juin 2005 à 11:25
Juste un detail

if (is_dir($file) )
{
operation sur <STRIKE>fichier</STRIKE> c est repertoire je pense non ??
}
else
{
alors c'est un fichier
}

Oui c a mon avis la meilleur facon de faire

<HR>
On ne peut pas savoir tout faire, mais on peut tout apprendre avec du travail. Morpheus262

PS: Besoin d aide pour developper, besoin d un collaborateur pour faire votre site, contacter moi par mail
l
0
cs_garfield90 Messages postés 388 Date d'inscription lundi 7 juillet 2003 Statut Webmaster Dernière intervention 10 février 2009
24 juin 2005 à 11:37
j'ai mes mains qui ont fourché mais bon ca reste comprehensible pour tout le monde.




"They are 10 sorts of persons whose understand binary and whose not"
0
rich25200 Messages postés 155 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 31 janvier 2008
24 juin 2005 à 11:38
regarder un code tout simple deja fait !!!!! mettez ca dans un fichier php et tester :



<?php



if ($handle = opendir('C://')) {

/* Ceci est la façon correcte de traverser un dossier. */

while (false !($file readdir($handle))) {

if (is_file($file))

{ echo "c'est un fichier : ".$file."
"; }

else

{ echo "c'est un repertoire : ".$file."
"; }

}

closedir($handle);

}

?>

il va dire que tous est un REPERTOIRE !!!!



Pourquoi ? tester !! je deviens fou !!!!!
0
cs_garfield90 Messages postés 388 Date d'inscription lundi 7 juillet 2003 Statut Webmaster Dernière intervention 10 février 2009
24 juin 2005 à 11:43
<?php



if ($handle = opendir('C://')) {

/* Ceci est la façon correcte de traverser un dossier.

--> je suis pas vraiment sur en tout cas dans ta version

*/

while (false ! ($file readdir($handle))) {

if (is_dir($file))

{ echo "c'est un repertoire: ".$file."
"; }

else

{ echo "c'est un fichier: ".$file."
"; }

}

closedir($handle);

}

?>




On va te le dire combien de fois



Y a plein de script sur ce site sur l'exploration de fichier et de
repertoire regardes dedans au lieu de poser des questions en restant
sur ta position!!!!




"They are 10 sorts of persons whose understand binary and whose not"
0
rich25200 Messages postés 155 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 31 janvier 2008
24 juin 2005 à 11:54
attend meme avec ton script j'ai tout a fait compris !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

maintenant avec ton script !!!!!!!!!



il me met que tout est un fichier !!!!!!!!!!!



ne nous enervons pas !!! lol



regarde mon copie d'ecran ca reviens au meme toujours le meme probleme
!!!!! il ne sait pas faire la distinction ente fichier et dossier...



copie d'ecran :





c'est un fichier: AUTOEXEC.BAT

c'est un fichier: boot.ini

c'est un fichier: Bootfont.bin

c'est un fichier: CONFIG.SYS

c'est un fichier: Documents and Settings

c'est un fichier: hiberfil.sys

c'est un fichier: hp

c'est un fichier: IO.SYS

c'est un fichier: LogiSetup.log

c'est un fichier: MSDOS.SYS

c'est un fichier: NTDETECT.COM

c'est un fichier: ntldr

c'est un fichier: pagefile.sys

c'est un fichier: Program Files

c'est un fichier: RECYCLER

c'est un fichier: sedinst.log

c'est un fichier: setup.log

c'est un fichier: sunjava.log

c'est un fichier: SXS

c'est un fichier: System Volume Information

c'est un fichier: SYSTEM.SAV

c'est un fichier: WINDOWS



ta vu meme probleme !!
0
cs_garfield90 Messages postés 388 Date d'inscription lundi 7 juillet 2003 Statut Webmaster Dernière intervention 10 février 2009
24 juin 2005 à 12:02
pas tester, excuse moi mais en 2 seconde je l'ai corrigé



$dir = 'c://';

if ($handle = opendir($dir)) {

/* Ceci est la façon correcte de traverser un dossier.

--> je suis pas vraiment sur en tout cas dans ta version

*/

while (false !($file readdir($handle))) {


if (is_dir($dir.$file))

{ echo "c'est un repertoire: ".$file."
"; }

else

{ echo "c'est un fichier: ".$file."
"; }

}

closedir($handle);

}

?>



Dans l'enervement, j'ai fait un oubli, mais en faisant des tests, du
debuggages et en lisant les docs sur les fonctions utilisé tu aurais vu
que readdir ne renvoi qu'un nom au format text sans le chemin donc
is_dir ne pouvez pas marcher de meme pour le is_file je pense tout a
l'heure ce qui aurait tout aussi bien marche sur windows mais je suis
pas sur pour les systeme de type Unix

"They are 10 sorts of persons whose understand binary and whose not"
0
rich25200 Messages postés 155 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 31 janvier 2008
24 juin 2005 à 12:18
OOOOOO tu es un maitre !!!!! meme sur les syteme windows ca fait le meme prob mais ton script corrige ce prob !!!



je suis sur que mon script de depart marchait avant les nouvelle
versions.. Car je l'avais deja utilisé dans des appli.... Je te
remercie beaucoup et desoler de t'avoir pris la tete !!! lol



Mias j'avais pas trouver la soluce et ca m'énervait aussi !!!



merci beaucoup et si tu es du coin je te paie un coup !! lol
0
cs_garfield90 Messages postés 388 Date d'inscription lundi 7 juillet 2003 Statut Webmaster Dernière intervention 10 février 2009
24 juin 2005 à 12:31
Pas de quoi, en fait j'ai pas desouler d'hier, donc pas de pb pour
aller picoler encore un peu (d'ou mon enervement rapide avec une erreur
de ma part).



Pour info, si tu remplaces is_dir par !is_file ca marchera pareil (avec mon script corrigé)



la fonction is_file reconnait correctement les dossiers meme sur linux (pour info )




"They are 10 sorts of persons whose understand binary and whose not"
0
Rejoignez-nous