supprimer un fichier

Mammouth du PHP | 620 Messages

05 juil. 2010, 21:17

ok merci pour ton aide en tout cas. je vai faire des essais...

AB quel solution puis-je avoir pour que sa fonctionne ?

j'ai fais un essai pour voir si unlink fonctionne bien et elle fonctionne
<?php
unlink("logo.pdf"); //on efface
?>
le fichier logo s'efface bien.

Alors pourquoimon code qui va chercher le nom dans ma base ne fonctionne pas (ne supprime pas de fichier ?)

ViPHP
AB
ViPHP | 5818 Messages

05 juil. 2010, 21:51

ok merci pour ton aide en tout cas. je vai faire des essais...

AB quel solution puis-je avoir pour que sa fonctionne ?

j'ai fais un essai pour voir si unlink fonctionne bien et elle fonctionne
<?php
unlink("logo.pdf"); //on efface
?>
le fichier logo s'efface bien.

Alors pourquoimon code qui va chercher le nom dans ma base ne fonctionne pas (ne supprime pas de fichier ?)
Sans doute parce que le chemin que tu récupères dans ta base de donnée n'est pas le bon par rapport au script que tu exécutes. Dans l'exemple que tu donnes il faudrait que la bdd te renvoie "logo.pdf" puisque le test direct avec unlink fonctionne avec ce chemin (qui indique que ton script et le fichier image sont dans le même répertoire).

Faits des test directement avec unlink depuis ton script pour effacer un fichier, et tu verras bien ce qu'il y a à compléter avec les données de ta bdd pour avoir le bon chemin.

Mammouth du PHP | 620 Messages

05 juil. 2010, 22:09

bon alors effectivement si je rentre manuellement mon chemin j'ai bien la suppresion qui fonction.
j'ai donc rentré :
$chemin = "../../magazines/logo.pdf";
et là le fichier logo se supprime bien.
par contre si je met :
$chemin = $dossier_traite."/".$fichier;
echo $chemin;  // donne ../../magazines/logo.pdf
sa ne fonctionne pas !!!! pourtant le chemin est identique !



revoulà le code du while :

while( $result = mysql_fetch_array( $requete ) )
{
echo 'Fichier a supprimer : '.$result['PDF'].'<br/>';
$dossier_traite = "../../magazines";
 
$repertoire = opendir($dossier_traite); //on définit le répertoire dans lequel on souhaite travailler
 
$fichier=$result['PDF'];

$chemin = $dossier_traite."/".$fichier; //on définit le chemin du fichier à effacer
//$chemin = "../../magazines/logo.pdf"; //on définit le chemin du fichier à effacer
echo $fichier; // donne logo.pdf 
echo $chemin;  // donne ../../magazines/logo.pdf
//si le fichier n'est pas un répertoire
if ($fichier != ".." AND $fichier != "." AND !is_dir($fichier))
       {
       unlink($chemin); //on efface
       }

closedir($repertoire);


}

je comprend pas mais sa ne serait pas une histoire de " au niveau du chemin ?
de plus y'a pas plus simple pour une simple suppression de fichier. là sa va que je veu en supprimer qu'un mais si j'en avai a supprimer plusieurs ....

ViPHP
AB
ViPHP | 5818 Messages

05 juil. 2010, 22:40

Pourquoi tant de complications ? Essaies plutôt
while($result = mysql_fetch_array($requete))
{

$fichier = $result['PDF'];

echo 'Fichier a supprimer : '.$fichier.'<br/>';

$dossier_traite = "../../magazines";
 
$chemin = $dossier_traite.'/'.$fichier; //on définit le chemin du fichier à effacer

//si le chemin est un fichier
if(is_file($chemin)) 

          unlink($chemin)); //on efface
          else 
          echo $chemin.' n\'est pas un chemin de fichier valide;
}

Mammouth du PHP | 620 Messages

05 juil. 2010, 22:45

j'ai essayé ta solution et j'ai en retour :
../../magazines/logo.pdf n'est pas un chemin de fichier valide

ViPHP
AB
ViPHP | 5818 Messages

05 juil. 2010, 22:47

j'ai essayé ta solution et j'ai en retour :
../../magazines/logo.pdf n'est pas un chemin de fichier valide
Tout est dit dans ce retour :wink:

Mammouth du PHP | 620 Messages

05 juil. 2010, 22:48

oui mais sa m'avance pas.
qu'est ce que je peu faire ? le chemin du fichier est pourtant bien celui là car si j'écris $chemin = "../../magazines/logo.pdf"; le logo.pdf est bien supprimé !
Modifié en dernier par fabrice88250 le 05 juil. 2010, 22:53, modifié 1 fois.

ViPHP
AB
ViPHP | 5818 Messages

05 juil. 2010, 22:52

Ben si ça t'avance, c'est que $dossier_traite n'est pas bon ... ou que tu testes des fichiers que tu as déjà supprimé.

Mammouth du PHP | 620 Messages

05 juil. 2010, 22:54

Bon ok j'ai trouvé ! lorsque j'inserrait dans ma base de donnée le nom du fichier il y avit un espace qui se glissait derrière l'extension. du coup meme en faisant de echo et tout se que l'on veut je n'y voyais rien.
Merci pour votre aide qui me servira pour la suite.

ViPHP
AB
ViPHP | 5818 Messages

05 juil. 2010, 23:08

Bah une bonne nuit de sommeil ça éclaircit souvent les choses :wink:

En tous cas souviens-toi demain matin que quand tu fais
if(is_file($chemin_du fichier)) echo 'ce fichier '.$chemin_du fichier.' existe'; else 'ce fichier '.$chemin_du fichier.' n\'existe pas OU ce n\'est pas le bon chemin PAR RAPPORT AU SCRIPT EN COURS';
la réponse est là.

EDIT : Arf j'avais pas vu ta réponse :)