Supprimer plusieurs membres de ma base de données

Supprimer plusieurs membres de ma base de données - PHP - Programmation

Marsh Posté le 23-07-2013 à 03:38:45    

Salut tout le monde, après avoir passé beaucoup de temps à la recherche de l erreur dans mon code je viens demander votre aide. Bon bref j essaie de supprimer un ou plusieurs membres après avoir affiché la liste des utilisateurs et mis des cases à cocher. Je coche les membres et je clique sur supprimer pour les supprimer. J'ai fait un bout de code. La liste des utilisateurs s'affiche et les cases à cocher. Le prob c'est quand je coche et clique sur supprimer rien ne se passe. Désolé pour ce long discours mais je craque vraiiiment làà. Si quelqu'un pourrait m aider je lui serai très reconnaissante. Merci
 
Le code :  
 

Code :
  1. Voici la liste des utilisateurs:
  2. <table>
  3.     <tr>
  4.         <td class="left"> <th>Id</th>
  5.         <th>Nom d'utilisateur</th>
  6.         <th>Email</th>
  7.     </tr>
  8.     <form action="users.php" method="post">
  9.     <ul>
  10.        
  11. <?php
  12. //On recupere les identifiants, les pseudos et les emails des utilisateurs
  13. $req = mysql_query('select id, username, email from users');
  14. while($dnn = mysql_fetch_array($req))
  15. {
  16. ?>
  17.        
  18.     <tr>
  19.         <td class="left"><input type="checkbox" name="id_supp[]" value="<?php echo $dnn['id']; ?>" class="id" />
  20.         <td class="left"><?php echo $dnn['id']; ?></td>
  21.         <td class="left"><a href="profile.php?id=<?php echo $dnn['id']; ?>">  &nbsp;  &nbsp;  &nbsp;  &nbsp;<?php echo htmlentities($dnn['username'], ENT_QUOTES, 'UTF-8'); ?></a></td>
  22.         <td class="left">  &nbsp;  &nbsp;  &nbsp; &nbsp; &nbsp; <?php echo htmlentities($dnn['email'], ENT_QUOTES, 'UTF-8'); ?></td>
  23.     </tr>
  24. <?php if(isset($_POST['btnAction'])){ //si on a cliqué sur 1 bouton action
  25.     if($_POST['btnAction']=="supprimer" ){  //si l'action est déplacer
  26.         if(!empty($_POST['id_supp'])){   //si on a cocher aux moin une case
  27.             foreach($_POST['id_supp'] as $dnn['id']){  //parcours les cases cochées
  28.              
  29.                $sql="DELETE FROM users WHERE id = '$id_supp'" ; // suppression des membres cochés
  30.                
  31.             }
  32.         }else{ //si aucune case n'a été cochée
  33.             echo 'vous n\'avez selectionné aucun fichier à déplacer';
  34.         }
  35.     }
  36. }
  37. ?>
  38. <?php
  39. }
  40. ?>
  41. </form>
  42. </table>

Reply

Marsh Posté le 23-07-2013 à 03:38:45   

Reply

Marsh Posté le 23-07-2013 à 08:56:20    

Code :
  1. foreach($_POST['id_supp'] as $dnn['id']){  //parcours les cases cochées
  2.            
  3.                $sql="DELETE FROM users WHERE id = '$id_supp'" ; // suppression des membres cochés
  4.              
  5.             }


à remplacer par  

Code :
  1. foreach($_POST['id_supp'] as $id_supp){  //parcours les cases cochées
  2.            
  3.                $sql="DELETE FROM users WHERE id = '$id_supp'" ; // suppression des membres cochés
  4.              
  5.             }


Cela pue le copier-coller foireux.
Et un conseil sérieux en passant : renseignez vous sur PDO, les fonctions mysql_ vont être abandonnées. Mieux vaut passer à PDO et surtout aux requêtes préparées qui permettent d'éviter les injections SQL sans se fatiguer.


---------------
Main/Alt1/Alt2/Alt3
Reply

Marsh Posté le 23-07-2013 à 11:38:57    

Merci pour votre réponse mais ça marche toujours pas. Je l'ai déjà essayé et je l'ai ressayé mais vainement :( Je suis bloquée à ce point je n'arrive plus à avancer.  

Reply

Marsh Posté le 23-07-2013 à 12:05:38    

Hum, il semble manquer des lignes au fait : où utilisez vous $sql ?


---------------
Main/Alt1/Alt2/Alt3
Reply

Marsh Posté le 23-07-2013 à 12:21:30    

Nulle part, je l'ai rajouté juste pour tester quand le mysql_query tout seul n'a pas marché. C'est le code complet que je vous ai copié. On liste les utilisateurs avec des cases à cocher, on cocher un ou plusieurs et on clique sur supprimer. Tout marche bien jusqu'au moment où je clique sur supprimer : rien ne se passe.

Reply

Marsh Posté le 23-07-2013 à 13:56:01    

[:pikitfleur:1] donc les requêtes de suppression ne sont jamais envoyées à la base de données ? Comment voulez vous que quelque chose se passe si rien n'est fait pour ?


---------------
Main/Alt1/Alt2/Alt3
Reply

Marsh Posté le 23-07-2013 à 13:58:04    

Oui apparemment c'est le cas. Qu'est ce que vous voulez dire par : " Comment voulez vous que quelque chose se passe si rien n'est fait pour ? "

Reply

Marsh Posté le 23-07-2013 à 14:09:42    

Volkhen a écrit :

[:pikitfleur:1] donc les requêtes de suppression ne sont jamais envoyées à la base de données ? Comment voulez vous que quelque chose se passe si rien n'est fait pour ?


Code :
  1. foreach($_POST['id_supp'] as $id_supp){  //parcours les cases cochées
  2.            
  3.                $sql="DELETE FROM users WHERE id = '$id_supp'" ; // suppression des membres cochés
  4.              
  5.             }
 

Ceci ne fait rien. Mis à part avoir une chaîne DELETE FROM users WHERE id = $dernière_id_de_la_liste après le bloc.

 

Il faudrait au moins avoir ça :

Code :
  1. foreach($_POST['id_supp'] as $id_supp){  //parcours les cases cochées
  2.            
  3.                $sql="DELETE FROM users WHERE id = '$id_supp'" ; // suppression des membres cochés
  4.                mysql_query($sql); // Envoie la requête à la base de données
  5.             }
 

Mais j'ai l'impression que vous êtes complètement dans le flou à propos de ce que fait votre code.


Message édité par Volkhen le 23-07-2013 à 14:10:25

---------------
Main/Alt1/Alt2/Alt3
Reply

Sujets relatifs:

Leave a Replay

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