fonction unlink bloque l'affichage d'une table

fonction unlink bloque l'affichage d'une table - PHP - Programmation

Marsh Posté le 12-10-2006 à 16:22:36    

Bonjour,
 
je suis en train de faire un album photo en php / mysql.
 
Sur ma page, le contenu de ma page photo s'affiche, et a coté de chaque photo, on peut cliquer sur 'supprimer'. Cela entraine la suppression de l'enregistrement de la photo dans la base et celle de la photo dans le dossier (grace à unlink). Tout fonctionne. Sauf que lorsque je fais appel à cette fameuse fonction unlink, le tableau affichant le contenu de ma page ne se recharge pas.
 
J'ai fait plein de tests et tout fonctionne, sauf lorsque je demande la suppression du fichier.
Pour que vous ayez une idée :
 
ma fonction delFichier :
 

Code :
  1. function delFichier($fichier){
  2. if(file_exists($fichier)) unlink($fichier);
  3. }


 
Qui est appelée à ce moment :

Code :
  1. if ((isset($HTTP_GET_VARS['supp'])) && ($HTTP_GET_VARS['supp'] != "" )) {
  2. $id = GetSQLValueString($HTTP_GET_VARS['supp'], "int" );
  3. $q="select id_rank, nom_photo, id_categorie from photo_tb where id_photo=$id";
  4. $r=mysql_query($q);
  5. $row=mysql_fetch_array($r) or die (mysql_error());
  6. $photo=$row['nom_photo'];
  7. $destination = "/home/hosts/melanie-sevin.com/www/ciaparra/photo/$photo";
  8. $id_rank=$row['id_rank'];
  9. $id_categorie=$row['id_categorie'];
  10. $q="update photo_tb set id_rank=id_rank-1 where id_rank>'$id_rank' and id_categorie='$id_categorie'";
  11. echo $q;
  12. $r=mysql_query($q);
  13. $q="delete from photo_tb where id_photo='$id'";
  14. $r=mysql_query($q);
  15. delFichier("$destination" ) or die (mysql_error());}


 
et la partie qui affiche ma table :

Code :
  1. $query = "SELECT * FROM photo_tb ORDER BY id_categorie, id_rank";
  2.  $result = mysql_query($query);
  3.  while ($val = mysql_fetch_array($result)) {
  4. $list.="<tr>
  5. <td align=\"center\" valign=\"middle\">".$val['id_rank']."</td>
  6. <td align=\"center\" valign=\"middle\">".$val['nom_photo']."</td>
  7. <td align=\"center\" valign=\"middle\">".$val['alea_photo']."</td>
  8. <td align=\"center\" valign=\"middle\">".$val['id_categorie']."</td>
  9. <td align=\"center\" valign=\"middle\"><a href=\"ajout_photo.php?supp=".$val['id_photo']."\">supprimer</a></td>
  10. <td align=\"center\" valign=\"middle\"><a href=\"ajout_photo.php?mod=".$val['id_photo']."\">modifier</a></td>
  11.     </tr>";
  12. }


 
 
Donc, je ne vois pas d'où ça peut venir. Est-ce que lorsque je supprime le fichier, cela empeche les requetes d'atteindre la base ?  
J'ai fait beaucoup de tests, et tout semble fonctionner à part ça..
 
Je vous remercie, si vous avez un conseil ou un indice....
 
Et si zavez besoin de voir la démo pour mieux visualiser :
 
melanie-sevin.com/ciaparra/ajout_photo.php

Reply

Marsh Posté le 12-10-2006 à 16:22:36   

Reply

Marsh Posté le 12-10-2006 à 16:26:35    

t'es sûre qu'elle est bien supprimée, ta photo?
Tu fais un die(mysql_error()) alors que ton delfichier n'appelle aucune fonction mysql...esasie un die("raté" ) ou ce que tu veux...


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 12-10-2006 à 16:29:17    

skeye a écrit :

t'es sûre qu'elle est bien supprimée, ta photo?
Tu fais un die(mysql_error()) alors que ton delfichier n'appelle aucune fonction mysql...esasie un die("raté" ) ou ce que tu veux...


 
Ah oui, en effet pour le die(mysql_error()) ça doit être l'habitude d'en mettre pour résoudre les probèmes.. Mais de toute façon le fichier est bien supprimé.  

Reply

Marsh Posté le 12-10-2006 à 16:29:17    

Je vois une incohérence dans ton code.
Peut-être absolument aucun lien avec ton problème, mais y'a un souçi de logique ici:
 

Citation :

delFichier("$destination" ) or die (mysql_error());


Puisque delFichier() n'utilise pas la base de données, je ne comprends pas bien ce que vient faire là ce mysql_error().
 
Tu es sûr que le fichier est bien supprimé ? Parce que si unlink échoue, ton script va s'arrêter (die) en affichant une chaîne vide (mysql_error() renvoie une chaîne vide s'il n'y a pas eu d'erreur). Ce qui en pratique donne le même résultat que de ne pas afficher ce qui suit, cad ton tableau.
 
 
Edit: multi-toasted [:benou_grilled]

Message cité 1 fois
Message édité par Chaos Intestinal le 12-10-2006 à 16:29:39
Reply

Marsh Posté le 12-10-2006 à 16:30:42    

soul_vision a écrit :

Ah oui, en effet pour le die(mysql_error()) ça doit être l'habitude d'en mettre pour résoudre les probèmes.. Mais de toute façon le fichier est bien supprimé.


tu as vérifié quand même que si tu mettais au chose dans le die ça ne s'affiche pas? :??:


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 12-10-2006 à 16:30:53    

y'a pas de return de delFichier ça aide pas a faire un or

Reply

Marsh Posté le 12-10-2006 à 16:30:59    

Chaos Intestinal a écrit :

Je vois une incohérence dans ton code.
Peut-être absolument aucun lien avec ton problème, mais y'a un souçi de logique ici:
 

Citation :

delFichier("$destination" ) or die (mysql_error());


Puisque delFichier() n'utilise pas la base de données, je ne comprends pas bien ce que vient faire là ce mysql_error().
 
Tu es sûr que le fichier est bien supprimé ? Parce que si unlink échoue, ton script va s'arrêter (die) en affichant une chaîne vide (mysql_error() renvoie une chaîne vide s'il n'y a pas eu d'erreur). Ce qui en pratique donne le même résultat que de ne pas afficher ce qui suit, cad ton tableau.
 
 
Edit: multi-toasted [:benou_grilled]


 
 
Bon ben ce devait etre ce mysql error qui me bloquait l'affichage, car une fois enlevé c'est bon ça fonctionne !
Merci d'avoir repéré cette betise !

Reply

Marsh Posté le 12-10-2006 à 16:32:22    

anapajari a écrit :

y'a pas de return de delFichier ça aide pas a faire un or


 
YOU WIN §§

Reply

Marsh Posté le 12-10-2006 à 16:33:13    

anapajari a écrit :

y'a pas de return de delFichier ça aide pas a faire un or


'tain oui, en effet! [:god]
 

soul_vision a écrit :

Bon ben ce devait etre ce mysql error qui me bloquait l'affichage, car une fois enlevé c'est bon ça fonctionne !
Merci d'avoir repéré cette betise !


 
Non, il faut le laisser, et que ta fonction renvoie true ou false suivant que l'opération a réussi ou pas! ;)


---------------
Can't buy what I want because it's free -
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed