Supprimer un dossier

Zenerox
Invité n'ayant pas de compte PHPfrance

05 sept. 2007, 15:19

Bonjour,

je vous montre d'abord mon code:

Code : Tout sélectionner

$pseudo=$_SESSION['pseudo']; $req4="select adresse from photoperso where pseudo='".$pseudo."'"; $result4=mysql_query($req4) or die (mysql_error()); while($data=mysql_fetch_array($result4)){ $fichier=$data['adresse']; unlink($fichier); } rmdir("photoperso/$pseudo"); $req5="select adresse from photodivers where pseudo='".$pseudo."'"; $result5=mysql_query($req5) or die (mysql_error()); while($data2=mysql_fetch_array($result5)){ $fichier2=$data2['adresse']; unlink($fichier2); } rmdir("photodivers/$pseudo"); $req="delete from membre where pseudo = '".$pseudo."'"; $result=mysql_query($req) or die (mysql_error()); $req2="delete from photoperso where pseudo='".$pseudo."'"; $result2=mysql_query($req2) or die (mysql_error()); $req3="delete from photodivers where pseudo='".$pseudo."'"; $result3=mysql_query($req3) or die (mysql_error());
Les fichiers sont bien effacés et mes dossiers sont donc vides cependant j'ai un message d'erreur qui me dit qu'ils ne le sont pas et donc ne sont pas supprimés.
Voyez-vous où est mon erreur please?

ViPHP
fab
ViPHP | 2657 Messages

05 sept. 2007, 15:33

tu as vérifié que tu n'as pas de fichier caché dans tes dossiers?

Petite remarque tu as des balises PHP pour colorer le code c'est toujours plus pratique :)
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }

zenerox
Invité n'ayant pas de compte PHPfrance

05 sept. 2007, 17:13

je n'ai pas crée de dossiers cachés....ce peut il q'il y en ait??

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

05 sept. 2007, 17:28

Quel est le message d'erreur exactement ?

Ton script s'exécute bien à la base des dossiers "photoperso" et "photodivers" ?
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Zenerox
Invité n'ayant pas de compte PHPfrance

05 sept. 2007, 18:15

Voila le message d'erreur:

Warning: rmdir(photoperso/Zenerox) [function.rmdir]: Directory not empty in C:\wamp\www\presentestesanimaux\Php\supprimecompte.php on line 10

et les dossiers photoperso et photodivers sont à la racine du site

ViPHP
ViPHP | 5924 Messages

05 sept. 2007, 22:02

Tu dois faire de la suppression récursive avec rmdir() et unlink().

Ou bien alors tu peux essayer ça à la limite :
‘rm -r photoperso/Zenerox‘;
Quoi flemmard ? :mrgreen:

Zenerox
Invité n'ayant pas de compte PHPfrance

06 sept. 2007, 09:28

Peux tu donner un exemple concret stp?
Et quelle est la syntaxe avec rm -r photoperso/Zenerox?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

06 sept. 2007, 10:06

C'est une ligne de commande unix que tu peux exécuter avec la fonction exex() de php, mais euh.. c'est peut être un peu violent quand même :)

Est-ce que tu peux supprimer le dossier si tu te connectes par ftp ?
peut être est-ce un dossier/fichier que tu as ouvert avec un opendir et que tu n'as pas fermé ?

Ajoute un opendir()/readdir() avant de supprimer le dossier pour lister les fichiers et dossiers qu'il contient, peut être verras-tu quelque chose qui cloche ?
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Zenerox
Invité n'ayant pas de compte PHPfrance

06 sept. 2007, 10:24

Il y a effectivement un Thumbs.db qui apparait mais il n'est pas visible depuis le dossier...
Ps : mon site n'est pas encore hébergé, il est encore sur mon ordi ( d'ailleurs si tu connais un bon hébergeur pas trop cher avec minimum 1 Go d'espace disk, 1 nom de domaine, Mysql, et référencement si possible fais moi signe :wink: )

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

06 sept. 2007, 10:42

ok, alors le Thumbs.db est un fichier système qui correspond en gros aux miniatures que produit windows lorsque tu choisis un affichage en "miniature" dans le dossier (il met les vignettes en cache dans ce fichier pour pouvoir les afficher plus rapidement la fois suivante)

Tu ne devrais pas avoir ce soucis une fois en ligne, puisque tu n'auras pas de consultation du dossier, le serveur (qui sera sans doute de l'unix) ne générera pas ce fichier.

Cependant afin d'être tranquille, tu peux tester la présence de ce fichier avec is_file() ou file_exists() pour le dégager avant de supprimer le dossier.

Une autre solution serait encore de garder ton script opendir() et de l'utiliser pour supprimer tous les fichiers contenus dans le dossier avant de le supprimer. Tu évites ainsi la requête qui n'est finalement pas utile, le but étant de toute façon de purger le dossier de tous les fichiers qu'il contient :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

ViPHP
fab
ViPHP | 2657 Messages

06 sept. 2007, 11:20

Erf, et moi qui parlait de fichier caché :)
Note pour moi-même windows powa !
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }

Zenerox
Invité n'ayant pas de compte PHPfrance

06 sept. 2007, 11:24

Bon j'y suis arrivé je vous remercie tous pour votre aide!