Verifier si un repertoire est vide puis le supprimer [Résolu]

Signaler
Messages postés
57
Date d'inscription
samedi 30 avril 2005
Statut
Membre
Dernière intervention
12 septembre 2009
-
Messages postés
57
Date d'inscription
samedi 30 avril 2005
Statut
Membre
Dernière intervention
12 septembre 2009
-
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

Messages postés
57
Date d'inscription
samedi 30 avril 2005
Statut
Membre
Dernière intervention
12 septembre 2009

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
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
25
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-
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
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>
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
25
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-
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
25
... 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-
Messages postés
57
Date d'inscription
samedi 30 avril 2005
Statut
Membre
Dernière intervention
12 septembre 2009

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
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
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>
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
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>
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
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>
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
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>
Messages postés
57
Date d'inscription
samedi 30 avril 2005
Statut
Membre
Dernière intervention
12 septembre 2009

bonsoir,

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

merci à tous les deux à bientot