is_dir complètement fou

Petit nouveau ! | 9 Messages

08 juil. 2007, 01:23

Bonjour,

Je désires filtrer les fichiers des répertoires.

donc j'utilise is(dir() mais celui-ci m'indique que mes dossier sont des fichiers.

Sauf pour . et .. où là il m'indique bien des répertoires.

Merci d'avance pour votre aide.

Laurent

ViPHP
ViPHP | 5924 Messages

08 juil. 2007, 02:21

Est ce que tu peux donner un bout de code ?

Petit nouveau ! | 9 Messages

08 juil. 2007, 19:12

	$handle = opendir('../espace_ftp/'.$rep);
	while (false !== ($file = readdir($handle))) 
	 {
	if ( is_dir($file))
	{
	    echo 'DIR='.$file.'<br>';
	 }
	else
	 {
	echo 'FILE='.$file.'<br>';
                 }
                 }
Résultat, j'obtiens pour mon répertoire FILE=Nom du répertoire et
DIR=.
DIR=..

Merci d'avance

Mammouth du PHP | 505 Messages

08 juil. 2007, 20:22

un petit is_dir() sur '../espace_ftp/'.$rep avant le opendir() ne serait pas de trop histoire d'etre sur que ce que tu ouvres existe et est lisible.

Petit nouveau ! | 9 Messages

08 juil. 2007, 20:32

Ce n'es qu'une extraction de mon code mais l'opendir est sûr d'ouvrir un répertoire avec des fichiers et d'autres répertoires.

Seulement les résultats sont bizarres

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

08 juil. 2007, 21:07

Si j'en crois ce code, tu ouvres un répertoire qui n'est pas celui où se trouve l'exécutable PHP.
Pour illustrer, imaginons cette architecture :

Code : Tout sélectionner

X / code / fichier.php / espace_ftp / fichier1 / fichier2 / repertoire1
Si je ne m'abuse, readdir() ne retourne que le nom du fichier, $file ne contient que "fichier1", "fichier2" ou "repertoire1".

Donc, si ton code PHP se trouve dans fichier.php, la commande is_dir($file) testera si la ressource "X/code/repertoire" est un dossier, et il retournera false, parce que cette ressource est inexistante.

Il faut donc que tu testes la ressources dans le bon dossier, de cette manière :
$handle = opendir('../espace_ftp/'.$rep);

while (false !== ($file = readdir($handle))) 
{
	if ( is_dir('../espace_ftp/'.$file))
    {
		echo 'DIR='.$file.'<br>';
	}
	else
	{
		echo 'FILE='.$file.'<br>';
	}
}
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Petit nouveau ! | 9 Messages

08 juil. 2007, 22:30

Effectivement cela va beaucoup mieu.

Merci pour tout.

Laurent

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

08 juil. 2007, 22:36

Modération :
bremer, si ta question est résolue, pense à ajouter le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.
Tu peux réaliser cette opération en cliquant sur le bouton Image en haut à gauche de ce sujet.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer