Verifier si un repertoire est vide puis le supprimer

Résolu
mariobotta Messages postés 57 Date d'inscription samedi 30 avril 2005 Statut Membre Dernière intervention 12 septembre 2009 - 12 nov. 2005 à 13:21
mariobotta Messages postés 57 Date d'inscription samedi 30 avril 2005 Statut Membre Dernière intervention 12 septembre 2009 - 12 nov. 2005 à 21:43
bonjour,

J'ai un petit problème je cherche une commande me permettant de vérifier si un repertoire est vide ou non .
si il est vide je dois le supprimer et seulement dans ce cas!
quelqu'un aurait il une idée?
merci d'avance à tous pour votre aide.

11 réponses

mariobotta Messages postés 57 Date d'inscription samedi 30 avril 2005 Statut Membre Dernière intervention 12 septembre 2009
12 nov. 2005 à 15:14
rebonjour,

oui tu avais raison c'était une histoire d'écrasement!
toutefois il y avait une pitit erreur (à readdir dossier et non dossier2) voici la correction :

$dossier2 = "../../image/gallery/".$id_page."/"; // repertoire où sont placées les images
$i=0;
$dossier=opendir($dossier2);
while(($fichier=readdir($dossier))!==FALSE)
{
if($fichier!=='.' AND $fichier!=='..')
{
$i++;
}
}
closedir($dossier);


if($i==0)
{
rmdir($dossier2);
echo "dossier effacer";
}

un tout tou grand merci pour ton aide à bientot
3
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
12 nov. 2005 à 17:58
Re,



Alternative à :

if (@!rmdir($folder)) echo 'impossible de supprimer le dossier';

que, je vois, tu n'aimes pas )



celle ci :



$folder='nom_du_dossier_a_supprimer';


if (is_dir($folder))
{



$i=0;


$dossier=opendir($folder);

while(($fichier = readdir($dossier))!==FALSE) {

$i++;

if ($i<=2) continue;

echo 'Le dossier n\'est pas vide.';

break;


}


if ($i<=2)
{



closedir($dossier);



rmdir($folder);


echo 'Dossier
effacé';



}


} else echo 'Le dossier n\'existe pas.';



Je me permet de la poster car la source d'Anthomicro a un petit défaut :

exemple : si tu analyses un rep non vide ou il y a 500 fichiers, le
script va boucler 503 fois alors que celle ci ne le fera que 3 fois
dans le pire des cas (bien plus rapide donc)



Cordialement,



Kohntark-
3
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
12 nov. 2005 à 14:03
Salut,

$i=0;
$dossier=opendir('dossier');

while(($fichier=readdir($dossier))!==FALSE)
{
if($fichier!=='.' AND $fichier!=='..')
{
$i++;
}
}
closedir($dossier);

if($i>0)
{
rmdir('dossier');
}
<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
12 nov. 2005 à 14:10
Sinon tu as ça :



$folder='vide/'; // dossier a supprimer



if (@!rmdir($folder)) echo 'le dossier n\'est pas vide';



C'est un peu moins beau à cause du @ mais c'est le plus léger.



Kohntark-
0

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

Posez votre question
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
12 nov. 2005 à 14:13
... il faudrait plutôt dire :

<strike>le dossier n'est pas vide</strike> --> impossible de
supprimer le dossier, car la condition sera vraie si le dossier n'est
pas vide OU si le dossier n'existe pas ou n'est pas accessible.



Kohntark-
0
mariobotta Messages postés 57 Date d'inscription samedi 30 avril 2005 Statut Membre Dernière intervention 12 septembre 2009
12 nov. 2005 à 14:50
bonjour,

merci pour ton aide
j'ai essaiyer ton code sur mon script mais j'ai toujour un problème du type:
rmdir() failed (No such file or directory)
je ne comprend pas trop car le chemin ($dossier) existe?

$dossier = "../../image/gallery/".$id_page."/"; // repertoire où sont placées les images
$i=0;
$dossier=opendir($dossier);


while(($fichier=readdir($dossier))!==FALSE)
{
if($fichier!=='.' AND $fichier!=='..')
{
$i++;
}
}
closedir($dossier);

if($i==0)
{
rmdir($dossier);
}

ais je fait une erreur quelque part?
merci d'avance
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
12 nov. 2005 à 14:59
héhé c'est normal

remplace par ça :

$dossier2 = "../../image/gallery/".$id_page."/"; // repertoire où sont placées les images
$i=0;
$dossier=opendir($dossier2);
while(($fichier=readdir($dossier2))!==FALSE)
{
if($fichier!=='.' AND $fichier!=='..')
{
$i++;
}
}
closedir($dossier);

if($i==0)
{
rmdir($dossier2);
}

t'as écrasé le contenu du dossier ;-)
<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
12 nov. 2005 à 15:15
oki de rien j'ai corrigé à l'arrache :-)

tu peux cliquer sur "réponse acceptée" stp ? merci beaucoup ;-)

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
12 nov. 2005 à 15:16
bon bah c'est fait lol

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
12 nov. 2005 à 18:05
pas bête :-)

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
mariobotta Messages postés 57 Date d'inscription samedi 30 avril 2005 Statut Membre Dernière intervention 12 septembre 2009
12 nov. 2005 à 21:43
bonsoir,

oui en effet ç plus rapide et évide les boucles inutiles

merci à tous les deux à bientot
0
Rejoignez-nous