Votre question

Problème bouton supprimer dans une boucle While

Tags :
  • Inbox
  • Programmation
Dernière réponse : dans Programmation
1 Juin 2010 10:16:40

Bonjour à tous,

Comme le titre l'indique, je rencontre un problème avec un bouton supprimer dans une boucle while.
En effet, j'ai fait un système de boîte de réception dans lequel je récupère les messages envoyés avec leur expéditeur, la date d'envoi... dans un tableau.
Pour cela, j'ai utilisé un While pour que je puisse afficher ces informations pour chaque message reçu.

J'aimerais permettre à l'utilisateur de supprimer les messages qu'il désire, j'ai donc rajouté un bouton supprimer dans chaque ligne du tableau.
Le problème est que lorsque j'essaie, c'est toujours le premier enregistrement de la table qui est supprimé.

Quelqu'un pourrait-il m'éclairer ?

Voici le code :
  1. <?
  2. if (isset($_POST['Supprimer']))
  3. {
  4. $suppression_query = tep_db_query ("DELETE FROM " . user_inbox . " WHERE id_message = '" . $_POST['id_msg'] . "'");
  5. }
  6. $message_query = tep_db_query("Select *
  7. FROM " . user_inbox . "
  8. WHERE id_receiver = '" . $_GET['id'] . "'
  9. ORDER BY inbox_date desc");
  10. $message_sender_query = tep_db_query("Select customers_pseudo
  11. FROM " . customers . "," . user_inbox . "
  12. WHERE customers_id = id_sender");
  13. $message_sender = tep_db_fetch_array($message_sender_query);
  14. ?>
  15.  
  16.  
  17.  
  18. <form action="inbox.php?id=<? echo $_GET['id']; ?>" method="POST" name="formulaire">
  19. <?
  20. $tableau_inbox = array();
  21. while ($message = tep_db_fetch_array($message_query))
  22. {
  23. array_push($tableau_inbox, '<br/><a href="account_page.php?id='.$message['id_sender'].'">'.$message_sender['customers_pseudo'].'</a><br/>Le '.date("d/m/Y à H\hi", strtotime($message['inbox_date'])).'<br/>Objet : '.$message['inbox_object'].'<br/><br/>'.$message['inbox_message'].'
  24.  
  25. <input type="hidden" name="id_msg" value="'.$message['id_message'].'">
  26. <input type="submit" name="Supprimer" value="Supprimer">
  27.  
  28. }
  29. foreach($tableau_inbox as $ligne)
  30. {
  31. echo $ligne;
  32. }
  33. ?>
  34. </form>


D'avance merci,
Cordialement...

Autres pages sur : probleme bouton supprimer boucle while

1 Juin 2010 11:25:34

Bonjour,

Au premier regard j'ai l'impression qu'il te manque quelque chose, la méthode "array_push" n'est pas fermé ...

Donc essaye plus proprement :

  1. <?
  2. ...
  3. while ($message = tep_db_fetch_array($message_query))
  4. {
  5. $tmpLine = "<br/><a href=\".account_page.php?id=".$message['id_sender']."\">";
  6. $tmpLine .= $message_sender['customers_pseudo'];
  7. $tmpLine .= "</a><br/>Le ".date("d/m/Y à H\hi", strtotime($message['inbox_date']));
  8. $tmpLine .= "<br/>Objet : ".$message['inbox_object']."<br/><br/>".$message['inbox_message'];
  9. $tmpLine .= "<input type=\"hidden\" name=\"id_msg\" value=\"".$message['id_message']."\" />";
  10. $tmpLine .= "<input type=\"submit\" name=\"Supprimer\" value=\"Supprimer\" />";
  11. array_push($tableau_inbox, $tmpLine);
  12. }
  13. ...
  14. ?>


C'est un peu plus lisible déjà. Et on remarque de suite ton problème, tu vas obtenir un grand nombre d'input de nom "id_msg" dans la même "form". Du coup, il prend le premier.

Il te faut ouvrir et fermer le "form" à chaque ligne (cf ci-dessous).


Ensuite, j'avoue que l'affichage est pas terrible terrible ... Dans des "div" / "fieldset" ce serait plus propre ...

Genre :

  1. ?>
  2. <fieldset><legend>Received Mail</legend>
  3. <?
  4. $cpt = 0;
  5. foreach($tableau_inbox as $ligne)
  6. {
  7. $cpt++;
  8. echo "\t\t<form action=\"inbox.php?id=".$_GET['id']."\" method=\"POST\" name=\"formulaire_supp_msg".$cpt."\">";
  9. echo "\t\t\t".$ligne."\n";
  10. echo "\t\t</form>";
  11. }
  12. ?>
  13. </fieldset>


Avec ça tu devrais avoir quelque chose d'un peu plus propre.
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS