Supprimer ligne tableau php / mysql

Messages postés
4
Date d'inscription
vendredi 28 juillet 2006
Statut
Membre
Dernière intervention
4 mai 2009
- - Dernière réponse : kohntark
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
- 4 mai 2009 à 13:42
Bonjour,

Je rencontre un petit soucis concernant la suppression de ligne en php.

J'ai un tableau de plusieurs colonnes et plusieurs lignes et dans la dernière colonne de chaque ligne un bouton "supprimer".

La suppression marche (même dans la BDD) mais c'est toujours ma
dernière ligne qui est supprimée (et non celle en face du bouton comme
je le voudrais)...

voici mon tableau sur la page Recap.php :






<form action="RecapSupp.php" method="post">
...
...
<?php while($data3 = mysql_fetch_assoc($sql3))
{

echo "<tr>
<td>$data3[ID]</td> //A CHAQUE LIGNE TOUS LES ID DIFFERENTS S'AFFICHENT CORRECTEMENT
<td>$data3[chp1]</td>
<td>$data3[chp2]</td>
<td>$data3[chp3]</td>
<td>
</td> // BOUTON SUPPRIMER
</tr>










puis la page RecapSupp.php :

$ID=$_POST["ID"];
echo $ID; // ici c'est l'ID de la dernière ligne qui est affiché :s

$query4 = "DELETE FROM matable WHERE ID=$ID";
mysql_query($query4) or die(mysql_error());

auriez vous un tuyau à me donner?

merci
Afficher la suite 

5 réponses

Messages postés
62
Date d'inscription
vendredi 6 janvier 2006
Statut
Membre
Dernière intervention
19 septembre 2011
0
Merci
Salut,

Effectivement cela ne peut pas marcher. Deja un submit doit etre contenu dans un <form>

Essaye plutot quelque chose comme ca à la place du ';
$i= 0;
whil e ($data3 = mysql_fetch_assoc($sql3))
 {
   //ton code jusqu'a $data3[ID]</italique>" />
  $i++;
 }

et dans ton fichier RecapSupp.php

 foreach($_POST as $indice=>$valeur)
  {
    $query4 = "DELETE FROM matable WHERE ID=$valeur";     mysql_query($query4) or die(mysql_error());
}
Commenter la réponse de Vonscott
Messages postés
4
Date d'inscription
vendredi 28 juillet 2006
Statut
Membre
Dernière intervention
4 mai 2009
0
Merci
Bonjour,
j'ai essayé ce que tu m'a dis:
dans Recap:
<?php $i=0;
while($data3 = mysql_fetch_assoc($sql3))
{     echo "<tr>
     <td>$data3[ID]</td>
     <td>$data3[Designation]</td>
...
....
     <td>$data3[Contact]</td>
     <td>
     
   
     </tr>
     
     ";
     $i++;}?>

et dans RecapSupp:
 foreach($_POST as $key=>$valeur)
  {
    $query4 = "DELETE FROM materiel WHERE ID=$valeur";   
    mysql_query($query4) or die(mysql_error());
}

mais j'ai l'erreur

Champ 'test1' inconnu dans where clause

où test1 est ce que j'ai tapé dans la 2ème colonne (designation)

je ne sais pas vraiment quoi faire la
pourriez vous m'aider svp

Merci
Commenter la réponse de javo222
Messages postés
4
Date d'inscription
vendredi 28 juillet 2006
Statut
Membre
Dernière intervention
4 mai 2009
0
Merci
Bonjour,

Personne ne saurait m'aider svp? :(
Commenter la réponse de javo222
Messages postés
4
Date d'inscription
vendredi 28 juillet 2006
Statut
Membre
Dernière intervention
4 mai 2009
0
Merci
Pas d'idées?
Commenter la réponse de javo222
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
21
0
Merci
Salut,

C'est bien normal que ça ne fonctionne pas car tes hidden portent le même nom et c'est donc le dernier qui prime.
Il y a plusieurs manières de faire. Dans la majorité des cas mettre des boutons à chaque fin de ligne n'est pas le plus approprié, mais ça dépend de ton appli.
Dans l'idée de Vonscott :
Tu remplaces :

=>

Tu mets 1 (ou plusieurs) bouton submit "supprimer les enregistrements sélectionnés"

Tu récupères ensuite, dans RecapSupp.php, un tableau contenant toutes les checkbox des lignes cochées, de la forme :
Array
(
[delete] => Array
(
[0] => 'id_1ere_ligne_a_supp', [1] => 'seconde ligne à supp', [2] => etc... )

)


Il ne te reste alors plus qu'à mettre ta requête de suppression dans une boucle.

Cordialement,

Kohntark -
Commenter la réponse de kohntark