savoir si un repertoire est vide

Eléphant du PHP | 191 Messages

01 juil. 2005, 09:44

Salut j'essaye d'afficher une image en fonction d'une condition .Si le repertoire est vide on afiche telle image et sinon on affiche l'autre....Voici le code
$rep = "var/www/html/monrepertoire";
$lire =readdir($rep);
				if(empty($lire))
				{
				echo"<td><a href='repertoire.php'><img src='icones.gif' alt='Explorateur'></a></td>";
				}
				else
				{
				echo"<td><a href='repertoire.php'><img src='icones.gif' alt='Explorateur'></a></td>";
				}

merci d'acceder à ma requette :P :wink:
Modifié en dernier par jujub le 01 juil. 2005, 11:00, modifié 1 fois.
tu as la splendeur d'un enterrement de première class e

Mammouth du PHP | 19672 Messages

01 juil. 2005, 09:48

Ce que tu ne nous dis pas, c'est ce qui ne fonctionne pas et si tu as ou non un message d'erreur ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 191 Messages

01 juil. 2005, 09:55

desolé ........ça marche pas....
voilà
Warning: readdir(): supplied argument is not a valid Directory resource in /var/www/html/read.php on line 4
tu as la splendeur d'un enterrement de première class e

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

01 juil. 2005, 10:11

Ce n'est pas un répertoire que la fonction readdir mais un handle (un pointeur). Il te faut donc créer ce pointeur, à l'aide de la fonction opendir() par exemple...

Lis le manuel

<?php
// Notez que !== n'existait pas avant 4.0.0-RC2

if ($handle = opendir('/chemin/vers/fichiers')) {
   echo "Directory handle: $handle\n";
   echo "Files:\n";

   /* Ceci est la façon correcte de traverser un dossier. */
   while (false !== ($file = readdir($handle))) {
       echo "$file\n";
   }

   /* Ceci est la MAUVAISE façon de traverser un dossier. */
   while ($file = readdir($handle)) {
       echo "$file\n";
   }

   closedir($handle);
}
?> 
Description
string readdir ( resource dir_handle )

readdir retourne le nom du fichier suivant dans le dossier identifié par dir_handle . Les noms sont retournés dans l'ordre qu'ils sont enregistrés dans le système de fichiers.

Liste de paramètres

dir_handle
La ressource de dossier ouverte précédemment avec opendir .

Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Eléphant du PHP | 191 Messages

01 juil. 2005, 10:25

if ($handle = opendir('repertoire/monrep')) {
   echo "Directory handle: $handle\n";
   echo "Files:\n";

   /* Ceci est la façon correcte de traverser un dossier. */
   if (false !== ($file = readdir($handle))) {
       echo "$file\n";
       echo"<td><a href='repertoires.php'><img src='icones.gif' alt='Explorateur'></a></td>";
   }
   else 
   {
   echo"<td><a href='corec/repertoires2.php'><img src='icones.gif' alt='Explorateur'></a></td>";
   }
closedir($handle);
}


mais meme le fichier vide il affiche toujours
<td><a href='repertoires.php'><img src='icones/fax-on.gif' alt='Explorateur'></a></td>";
c'est bizarre non?
Modifié en dernier par jujub le 01 juil. 2005, 11:01, modifié 1 fois.
tu as la splendeur d'un enterrement de première class e

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

01 juil. 2005, 10:28

En ce cas, c'est ton test qui n'est pas bon. Mais j'avoue que je ne sais pas trop.

Réfléchis bien à ce que tu lui demande de tester, et à comment ça se dit en PHP.

Eléphant du PHP | 191 Messages

01 juil. 2005, 10:30

lerreur est la suivante
Directory handle: Resource id #2 Files: .
tu as la splendeur d'un enterrement de première class e

Eléphant du PHP | 199 Messages

01 juil. 2005, 10:36

Au passage tu as 2 fichiers (c'est des raccourcis même :wink: ) même si ton répertoire est vide :
.
..

. => répertoire courant
.. => répertoire parent
Les 2 font la paire : coder ET commenter :wink:

Eléphant du PHP | 191 Messages

01 juil. 2005, 10:40

y'a t'il moyen de dégager ces deux répertoire avec php......
tu as la splendeur d'un enterrement de première class e

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

01 juil. 2005, 10:48

y'a t'il moyen de dégager ces deux répertoire avec php......
Si tu suivais mes conseils.... :roll:
Clique !
http://fr.php.net/manual/fr/function.readdir.php
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Eléphant du PHP | 191 Messages

01 juil. 2005, 10:59

OK j'avais pas vu le lien.......

Mais c'est bon j'ai trouver :
if ($handle = opendir('rep/monrep')) {
   echo "Directory handle: $handle\n";
   echo "Files:\n";
$file = readdir($handle);
   /* Ceci est la façon correcte de traverser un dossier. */
   if (!empty($file)&&$id_file!='.'&&$id_file!='..') 
   {
       //echo "$file\n";
       echo"<td><a href='repertoire.php'><img src='icones.gif' alt='Explorateur'></a></td>";
   }
   else 
   {
   echo"<td><a href='repertoire.php'><img src='icone.gif' alt='Explorateur'></a></td>";
   }

   closedir($handle);
} 	
tu as la splendeur d'un enterrement de première class e

Eléphant du PHP | 191 Messages

12 juil. 2005, 10:33

En fait il ne m'affiche plus que l'icone fax off avec le code suivant (l'ancien ne fonctionnait pas en fait)
if ($handle = opendir('/chemin/du/repertoire/')) 
				{
 				  $file = readdir($handle);
				  
      					 if ($file != "." && $file != "..") 
					{
          				 echo"<td><a href='fich.php'><img src=oui.gif'></a></td>";
       				 	}
					else
					{
					echo"<td><a href='fich.php'><img src=non.gif'></a></td>";
					}
   				  
   				 closedir($handle);
				}
ça fait longtemp que je cherche et pas de réponse Help :oops:
tu as la splendeur d'un enterrement de première class e