Supprimer des membres en PHP

Nouveau WRInaute
Bonjour tout le monde, je viens demander votre aide après avoir passé 5 jours à chercher l'erreur dans mon code vainement. Bon je veux afficher ma liste d'utilisateurs avec des cases à cocher pour pouvoir supprimer. Tout marche bien jusqu'au moment où je clique sur supprimer rien ne se passe. Si quelqu'un pourrait m'aider je lui serai très reconnaissante. Voilà le code que j'ai fait :
Code:
Voici la liste des utilisateurs:
<table>
    <tr>
        <td class="left"> <th> Id </th>
        <th>Nom d'utilisateur</th>
        <th>Email</th>
    </tr>
    <form action="users.php" method="post">
    <ul>
         
<?php
 
//On recupere les identifiants, les pseudos et les emails des utilisateurs
$req = mysql_query('select id, username, email from users ORDER BY id');
while($dnn = mysql_fetch_array($req))
{
?>
        
    <tr>
        <td class="left"><input type="checkbox" name="id_supp[]" value="<?php echo $dnn['id']; ?>" class="id" />
        <td class="left"><?php echo $dnn['id']; ?></td>
        <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>
        <td class="left">  &nbsp;  &nbsp;  &nbsp; &nbsp; &nbsp; <?php echo htmlentities($dnn['email'], ENT_QUOTES, 'UTF-8'); ?></td>
    </tr>
<?php
 if(isset($_POST['btnAction'])){ //si on a cliqué sur 1 bouton action
    if($_POST['btnAction']=="supprimer"){  //si l'action est supprimer
        if(!empty($_POST['id_supp'])){   //si on a coché aux moins une case
           foreach($_POST['id_supp'] as $id_suppr) {
              mysql_query('DELETE FROM users WHERE id = \'' . $_GET['id_supp'] . '\'');

             
            }
                 
            }
        }else{ //si aucune case n'a été cochée
            echo 'vous n\'avez selectionné aucun fichier à déplacer';
        }
    }
}
?>

</form>


</table>
      </div>
 
WRInaute occasionnel
Hmm...
Je vois plusieurs incohérences dans ton code.
1/ je ne vois pas de submit, donc je ne sais pas comment tu fais pour soumettre ton formulaire.
2/ ça m'a tout l'air d'être un copié/collé, du coup, il reste des choses non adaptées.

Essayes déjà de remplacer :
Code:
mysql_query('DELETE FROM users WHERE id = \'' . $_GET['id_supp'] . '\'');
par :
Code:
mysql_query('DELETE FROM users WHERE id = \'' . $id_suppr . '\'');

Pour débugger un peu, après :
Code:
mysql_query('DELETE FROM users WHERE id = \'' . $id_suppr . '\'');
rajoute :
Code:
echo "DELETE FROM users WHERE id = $id_suppr'';

Attention, ton code est très vulnérable !!!
 
WRInaute accro
par : mysql_query('DELETE FROM users WHERE id = \'' . $id_suppr . '\'');
tu veux dire, par : mysql_query('DELETE FROM users WHERE id = \'' . $_POST['id_supp'] . '\'');

car $id_suppr n'existe pas dans ce contexte
 
Nouveau WRInaute
Merci tout d'abord pour votre réponse, j'ai raté la ligne du submit. J'ai essayé votre solution mais la suppression ne s'effectue pas et il n'y a pas de messages d'erreurs.
Le code :

Code:
Voici la liste des utilisateurs:
<table>
    <tr>
        <td class="left"> <th> Id </th>
        <th>Nom d'utilisateur</th>
        <th>Email</th>
    </tr>
    <form action="users.php" method="post">
    <ul>
         
<?php
 
//On recupere les identifiants, les pseudos et les emails des utilisateurs
$req = mysql_query('select id, username, email from users ORDER BY id');
while($dnn = mysql_fetch_array($req))
{
?>
        
    <tr>
        <td class="left"><input type="checkbox" name="id_supp[]" value="<?php echo $dnn['id']; ?>" class="id" />
        <td class="left"><?php echo $dnn['id']; ?></td>
        <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>
        <td class="left">  &nbsp;  &nbsp;  &nbsp; &nbsp; &nbsp; <?php echo htmlentities($dnn['email'], ENT_QUOTES, 'UTF-8'); ?></td>
    </tr>
<?php
 if(isset($_POST['btnAction'])){ //si on a cliqué sur 1 bouton action
    if($_POST['btnAction']=="supprimer"){  //si l'action est supprimer
        if(!empty($_POST['id_supp'])){   //si on a coché aux moins une case
           foreach($_POST['id_supp'] as $id_suppr) {
             mysql_query('DELETE FROM users WHERE id = \'' . $id_suppr . '\'');
			 echo "DELETE FROM users WHERE id = $id_suppr";

             
            }
                 
            }
        }else{ //si aucune case n'a été cochée
            echo 'vous n\'avez selectionné aucun fichier à déplacer';
        }
    }
}
?>

</form>


</table>
		</div>
		 <div class="foot"><input type="submit" name="btnAction" value="supprimer" />
 
Nouveau WRInaute
e-kiwi a dit:
par : mysql_query('DELETE FROM users WHERE id = \'' . $id_suppr . '\'');
tu veux dire, par : mysql_query('DELETE FROM users WHERE id = \'' . $_POST['id_supp'] . '\'');

car $id_suppr n'existe pas dans ce contexte

J'ai testé avec ça, on me donne ce message d'erreur : Parse error: syntax error, unexpected T_STRING in C:\Program Files\EasyPHP-5.3.9\www\espace_membre\users.php on line 52
 
WRInaute occasionnel
e-kiwi a dit:
par : mysql_query('DELETE FROM users WHERE id = \'' . $id_suppr . '\'');
tu veux dire, par : mysql_query('DELETE FROM users WHERE id = \'' . $_POST['id_supp'] . '\'');

car $id_suppr n'existe pas dans ce contexte

Hmm...
Il est instancié dans le foreach...
 
WRInaute occasionnel
Le mieux est de voir dans quel else tu tombes.
Remplace :
Code:
<?php
if(isset($_POST['btnAction'])){ //si on a cliqué sur 1 bouton action
    if($_POST['btnAction']=="supprimer"){  //si l'action est supprimer
        if(!empty($_POST['id_supp'])){   //si on a coché aux moins une case
           foreach($_POST['id_supp'] as $id_suppr) {
             mysql_query('DELETE FROM users WHERE id = \'' . $id_suppr . '\'');
          echo "DELETE FROM users WHERE id = $id_suppr";

             
            }
                 
            }
        }else{ //si aucune case n'a été cochée
            echo 'vous n\'avez selectionné aucun fichier à déplacer';
        }
    }
}
?>
Par :
Code:
<?php
if (isset($_POST['btnAction']))
{ //si on a cliqué sur 1 bouton action
  if ($_POST['btnAction'] == "supprimer")
  { //si l'action est supprimer
    if (!empty($_POST['id_supp']))
    { //si on a coché aux moins une case
      foreach ($_POST['id_supp'] as $id_suppr)
      {
        mysql_query('DELETE FROM users WHERE id = \'' . $id_suppr . '\'');
        echo "DELETE FROM users WHERE id = $id_suppr";
      }
    }
    else
    { //pas de POST[id_supp]
      echo 'Pas de valeur à traiter.';
    }
  }
  else
  {
    echo 'Erreur avec la valeur du submit';
  }
}
else
{
  echo 'Erreur avec la présence du submit';
}
?>
 
Nouveau WRInaute
chtipepere a dit:
Le mieux est de voir dans quel else tu tombes.
Remplace :
Code:
<?php
if(isset($_POST['btnAction'])){ //si on a cliqué sur 1 bouton action
    if($_POST['btnAction']=="supprimer"){  //si l'action est supprimer
        if(!empty($_POST['id_supp'])){   //si on a coché aux moins une case
           foreach($_POST['id_supp'] as $id_suppr) {
             mysql_query('DELETE FROM users WHERE id = \'' . $id_suppr . '\'');
          echo "DELETE FROM users WHERE id = $id_suppr";

             
            }
                 
            }
        }else{ //si aucune case n'a été cochée
            echo 'vous n\'avez selectionné aucun fichier à déplacer';
        }
    }
}
?>
Par :
Code:
<?php
if (isset($_POST['btnAction']))
{ //si on a cliqué sur 1 bouton action
  if ($_POST['btnAction'] == "supprimer")
  { //si l'action est supprimer
    if (!empty($_POST['id_supp']))
    { //si on a coché aux moins une case
      foreach ($_POST['id_supp'] as $id_suppr)
      {
        mysql_query('DELETE FROM users WHERE id = \'' . $id_suppr . '\'');
        echo "DELETE FROM users WHERE id = $id_suppr";
      }
    }
    else
    { //pas de POST[id_supp]
      echo 'Pas de valeur à traiter.';
    }
  }
  else
  {
    echo 'Erreur avec la valeur du submit';
  }
}
else
{
  echo 'Erreur avec la présence du submit';
}
?>


Merci pour votre réponse et votre temps. On m'affiche cette erreur : Parse error: syntax error, unexpected $end in C:\Program Files\EasyPHP-5.3.9\www\espace_membre\users.php on line 80
J'ai vérifié les " { " et "} " mais l erreur est toujours là.
 
Nouveau WRInaute
Il y avait une { qui n'était fermée, je l'ai fermé et pourtant rien ne se passe je clique sur supprime et rien ne se passe
 
Nouveau WRInaute
chtipepere a dit:
Mets ton submit avant </form>.

Merciiiiiiiiiiiiiiiiiiiiiiiiii infiniiiiiiment! la suppression marche très bien maintenant lorsque je ne coche qu'une seule case. Il y a encore un tout petit problème, c'est lorsque je selectionne plusieurs, on ne me supprime qu'une seule. Que dois-je faire ?
 
Nouveau WRInaute
C'est bon c'est réglé .. j'ai fait ça :
Code:
$sql=mysql_query('DELETE FROM users WHERE id = \'' . $id_suppr . '\'');
        mysql_query($sql);

Merciiii pour votre aide
 
WRInaute occasionnel
Il faut qu'on récupère plus de contexte.
Avant :
Code:
if ($_POST['btnAction'] == "supprimer")
Rajoute :
Code:
print_r($_POST);
Et colle ici le résultat.
 
Nouveau WRInaute
chtipepere a dit:
Il faut qu'on récupère plus de contexte.
Avant :
Code:
if ($_POST['btnAction'] == "supprimer")
Rajoute :
Code:
print_r($_POST);
Et colle ici le résultat.


C'est fait. On m'affiche ceci :
Array ( [id_supp] => Array ( [0] => 3 [1] => 2 ) [btnAction] => supprimer ) Array ( [id_supp] => Array ( [0] => 3 [1] => 2 ) [btnAction] => supprimer ) Array ( [id_supp] => Array ( [0] => 3 [1] => 2 ) [btnAction] => supprimer )

En actualisant la page, j'ai 3 membres maintenant. Soit le dernier qui se supprime ou bien les 2 derniers.Sans même cliquer sur supprimer, c'est bizarre. Savez-vous pourquoi ?
 
Discussions similaires
Haut