supprimer un fichier

Mammouth du PHP | 620 Messages

05 juil. 2010, 17:27

Bonjour,
lorsque je veus supprimer des données stockées dans ma base de données j'utilise une requete sql :
     $result=mysql_query("DELETE FROM IWinfonews WHERE id=$id");
maintenant et toujours daans cette meme base je rentre des nom de fichiers qui sont stocké sur le serveur du site.
par exemple j'ai un champs "nom" avec pour valeur : jonquille et une champ photos avec pour valeur : jonquille.jpg
avec ma requette je supprime bien donc tout le contenu de la base de données mais pas la photos jonquille.jpg qui est stocké sur le serveur.

Comment faire pour que cette photo soit supprimée physiquement du sereur en meme temps que les infos de la base ?

Eléphanteau du PHP | 13 Messages

05 juil. 2010, 18:08

va voir de ce coté ce coté bien entendu il faudra recuperer le nom du fichier que tu veut supprimer avant de le supprimer de la BDD

Mammouth du PHP | 620 Messages

05 juil. 2010, 18:36

je viens d'essayé avec Unlink. j'ai le bon chemin pour mon fichier mais rien ne se supprime. pourquoi ?
en premier je fais supprimer le fichier (marche pas) puis après les infos qui sont dans la base de données (sa marche).


<?php
include("../connexion-sql.php");
	  
$id = $_GET["id"];
		
$requete = mysql_query("SELECT * FROM IWmagazines WHERE id=$id"); 
while( $result = mysql_fetch_array( $requete ) )
{ 
echo 'Fichier a supprimer : '.$result['PDF'].'<br/>';
unlink ("../../magazines/" .$result['PDF']);  
echo 'Fichier supprimé <br/>';
} 

	
$resultbd=mysql_query("DELETE FROM IWmagazines WHERE id=$id");
if (!$resultbd) 
{
echo "<img src='../images/close.png' />La mise à jour a échouée. Contactez l'administrateur du site<br/>";
} 

else 
{
echo " <img src='../images/check.png' /> Actualité supprimée. Elle n'apparaitra plus sur le site<br/>";

}
mysql_close();
?>

Eléphanteau du PHP | 13 Messages

05 juil. 2010, 18:43

as tu bien lu toute la page que je t'ai passé en lien?
Il faut avant de supprimer le fichier ouvrir le repertoire dans lequel se trouve le fichier en question.
Et tes autorisations sont elles correctes?

Mammouth du PHP | 620 Messages

05 juil. 2010, 19:17

Bon je comprend pas trop.
j'ai essayé d'ouvrir et lire le repertoire mais sa ne me supprime toujours pas mon fichier.

<?php
include("../connexion-sql.php");
	  
$id = $_GET["id"];
		
$requete = mysql_query("SELECT * FROM IWmagazines WHERE id=$id"); 
while( $result = mysql_fetch_array( $requete ) )
{ 
echo 'Fichier a supprimer : '.$result['PDF'].'<br/>';
$ouverture = opendir ("../../magazines"); 
$dossier = "../../magazines";

$lecture = readdir($ouverture);
$fichier = $result['PDF'];
$chemin = $dossier."/".$fichier;
unlink ($chemin);  
echo 'Fichier supprimé <br/>';
closedir($ouverture); 



} 

	
$resultbd=mysql_query("DELETE FROM IWmagazines WHERE id=$id");
if (!$resultbd) 
{
echo "<img src='../images/close.png' />La mise à jour a échouée. Contactez l'administrateur du site<br/>";
} 

else 
{
echo " <img src='../images/check.png' /> Actualité supprimée. Elle n'apparaitra plus sur le site<br/>";

}
mysql_close();
?>
 

Eléphanteau du PHP | 13 Messages

05 juil. 2010, 19:29

les noms de tes fichiers que tu veut supprimer se touvent dans le champs PDF de ta table?

Mammouth du PHP | 620 Messages

05 juil. 2010, 19:34

oui c'est ça. mais sa fonctionne pas

Eléphanteau du PHP | 13 Messages

05 juil. 2010, 19:37

quel est l'organisation de ton site ou se trouve les fichiers a supprimer(dossier et position du dossier par rapport a la racine?)

Mammouth du PHP | 620 Messages

05 juil. 2010, 19:40

mes pdf sont dans un répertoire 'magazines' qui se trouve à la racine du site.
mon code php se trouve par rapport a la racine du site dans un repertoire 'admin' et un sous repertoire 'mag' qui contient mon code suppression.php.

Eléphanteau du PHP | 13 Messages

05 juil. 2010, 19:52

esaaye ce code:
<?php
include("../connexion-sql.php");
 if(isset($_GET['id']))  
{      
$id = $_GET["id"];
               
$requete = mysql_query("SELECT * FROM IWmagazines WHERE id=$id");
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
 
//si le fichier n'est pas un répertoire
if ($fichier != ".." AND $fichier != "." AND !is_dir($fichier))
       {
       unlink($chemin); //on efface
       }

closedir($repertoire);


}

       
$resultbd=mysql_query("DELETE FROM IWmagazines WHERE id=$id");
if (!$resultbd)
{
echo "<img src='../images/close.png' />La mise à jour a échouée. Contactez l'administrateur du site<br/>";
}

else
{
echo " <img src='../images/check.png' /> Actualité supprimée. Elle n'apparaitra plus sur le site<br/>";

}
mysql_close();
}
 else
{echo" la variable $id n'as pas été crée";}
?>

Mammouth du PHP | 620 Messages

05 juil. 2010, 19:55

#-o le fichier est toujours présent sur le serveur.
mon repertoire 'magazines' est en 777 en plus. je comprend pas pourquoi sa ne fonctionne pas.

Eléphanteau du PHP | 13 Messages

05 juil. 2010, 19:59

affiche la variable chemin avec un echo pour voir si elle contient bien le chemin vers le fichier a supprimer?
et la variable id est elle bien cree? je t'ai rajouté un isset pour verifier

Mammouth du PHP | 620 Messages

05 juil. 2010, 20:04

j'ai fais un echo $chemin;
j'ai bien le bon chemin qui vas au fichier qui s'affiche : ../../magazines/mag1.pdf

idem avec l'ajout du isset

Eléphanteau du PHP | 13 Messages

05 juil. 2010, 20:17

alors la je botte en touche desolé je vois pas ce qui coince. enfin je n'ai jamais utilisé cette fonction je recherche en meme temps que toi.
Desolé. Je testerai ca plus tard et si j'ai du nouveau je te tiendrai au courant.

ViPHP
AB
ViPHP | 5818 Messages

05 juil. 2010, 21:16

Il faut avant de supprimer le fichier ouvrir le repertoire dans lequel se trouve le fichier en question.
Depuis quand ? Non c'est pas nécessaire.