PHP Case a cocher
lamzo74 -
Je ve rajouter une otre colonne ou serai mi une case a coché dans une page ou s'affiche via une requete sql toute les donnée enregistré par ligne.
Quand je clik sur cette ou ces case, j'ai un bouton "supprimer" en page de page qui supprime donc la ou les ligne dont la case a été cocher.
Au niveau du code j'i arrive pas est ce que quelqu'un aurait une idée au niveau du code mercii!! d'avanceee
Configuration: Windows XP Internet Explorer 7.0
16 réponses
Le sujet porte sur l'ajout d'une case à cocher par ligne dans une liste affichée via SQL, afin de pouvoir supprimer les lignes sélectionnées par un bouton 'supprimer'.
Plusieurs intervenants évoquent l'utilisation d'un système de suppression par case à cocher avec un formulaire et une requête DELETE, insistant sur le nommage des checkbox comme suppr_XXXX_YYYY pour identifier chaque ligne.
Des échanges portent sur l'emploi de requêtes DELETE FROM tb_ticket WHERE NumeroTicket=... AND IndexTicket=..., et sur la vérification du nom des champs et valeurs transmises pour supprimer la ligne cochée.
D'autres évoquent des fautes dans le code PHP et l'usage des variables POST, sans conclure sur l'état du fil, mais soulignent que la suppression dépend du nom des cases.
-
Regarde dans phpmyadmin c'est exactement ce que je recherche :
http://www.php-astux.info/images/articles/mysql-phpmyadmin3.png
il a y des lignes, tout a gauche on retrouve une case on la coche et en bas du tableau ya une croix rouge on clique et sa la supprime c'est ce que je souhaite faire . -
Salut,
Par exemple, tu nommes tes cases à cocher suppr_ID ou ID est l'id de l'élément à supprimer
Et sur ta page de traitement, pour chaque variable que tu reçois en POST, tu regardes si elle se commence par suppr_ si oui, tu récupères l'ID et tu supprimes dans la base -
slt
merci de ta réponse
desolé mais tu va trop vite pour moi je débute en php. ^^
Si tu pourrais m'aidé au niveau du code sa serez cool sa m'arrangerais. merci -
desolé j oublié de presicé dans ma table ma clé primaire est formé de 2 champ: IndexTicket et NumeroTicket.
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Bon, si je comprends bien, tu ne veux pas supprimer tout le ticket ( numTicket=X ) mais seulement une partie ( numTicket=X et indexTicket=Y ) ?
A la création, tu nommes tes cases à cocher :name=\"suppr_\"".rst["numTicket"]."_".rst["indexTicket"]
Côté traitement du formulaire :
<code>
foreach($_POST as $nom => $val) // Pour chaque valeur venant du formulaire
{
if(substr($nom,0,6)=="suppr_") // Si c'est une case à cocher de suppression
{
$cle = substr($nom,6); // On enlève suppr_
$index = substr($cle,0,strpos($cle,"_")); // On récupère l'index
$num = substr($cle,strpos($cle,"_")+1); // On récupère le numéro
mysql_query("DELETE FROM TICKET WHERE numTicket=$num et indexTicket=$index"); // Suppression
}
}-
sisi je veux supprimer tout le ticket (une ligne correspond a un ticket) et IndexTicket et NumeroTicket sont la clé primaire donc il determinent tous les autre champ de la table ticket donc que dans notre code on en aura besoin !
Qu'est que t'en pensse ?- Si j'ai bien compris :
Tu n'as besoin que de numTicket en fait dans le code car numTicket doit être le numéro du ticket ( un numéro qui est unique pour un ticket ).
indexTicket doit correspondre à un message précis du ticket donc quand on supprime, on supprime tous les messages du ticketDELETE FROM TICKET WHERE numTicket=X
donc ça deviendrait :Pour le nommage : "suppr_".$rst["numTicket"]; foreach($_POST as $nom => $val) // Pour chaque valeur venant du formulaire { if(substr($nom,0,6)=="suppr_") // Si c'est une case à cocher de suppression { $num = substr($cle,6); // On récupère le numéro mysql_query("DELETE FROM TICKET WHERE numTicket=$num"); // Suppression } }
-
-
J'abandonne sa marche pas.
c'est quelque chose qui se fait presque partout sur les site mais aparement c'est dur a comprendre bref tanpi merci de ton aide quand meme Mikey_UFC8.
bonne continuation-
-
lorsque je coche ma case de ma ligne et j'appuie sur supprimer rien ne se fait voici mon code :
de ma page "tickets.php"
<table border="1"><tr>
<th>Index ticket</th>
<th>Numéro du ticket</th>
<th>Nom du client</th>
<th>Date du ticket</th>
<th>Heure du Ticket</th>
<th>Nom du Recepteur</th>
<th>Interlocuteur client</th>
<th>Sujet du ticket</th>
<th>Affecté à</th>
<th>Editer</th>
</tr>
<?php
$retour = mysql_query('SELECT * FROM tb_ticket ORDER BY NumeroTicket ASC');
while ($donnees = mysql_fetch_array($retour)) // On fait une boucle pour lister les résultats
{
?>
<tr>
<td><?php echo $donnees['IndexTicket']; ?></td>
<td><?php echo $donnees['NumeroTicket']; ?></td>
<td><?php echo $donnees['NomClient']; ?></td>
<td><?php echo $donnees['DateTicket']; ?></td>
<td><?php echo $donnees['HeureTicket']; ?></td>
<td><?php echo $donnees['RecepteurTicket']; ?></td>
<td><?php echo $donnees['InterlocuteurClient']; ?></td>
<td><?php echo $donnees['SujetTicket']; ?></td>
<td><?php echo $donnees['AffectationTicket']; ?></td>
<td><input type='checkbox' name="suppr_\".rst["IndexTicket"]."_".rst["NumeroTicket"]'></td>
</tr>
<?php
foreach($_POST as $nom => $val) // Pour chaque valeur venant du formulaire
{
if(substr($nom,0,6)=="suppr_") // Si c'est une case à cocher de suppression
{
$cle = substr($nom,6); // On enlève suppr_
$IndexTicket = substr($cle,0,strpos($cle,"_")); // On récupère l'index
$NumeroTicket = substr($cle,6); // On récupère le numéro
mysql_query("DELETE FROM tb_ticket WHERE NumeroTicket=$NumeroTicket and IndexTicket=$IndexTicket"); // Suppression
}
}
?>
<?php
} // Fin de la boucle
?>
</table>
<P align=left>
<center><input name="suppr_\" type=submit value="Supprimer"></center><br><br>
<p align="center"><a href="index.php?erreur=logout"><strong>Vous déconnecter</strong></a></p> -
-
il y a pa besoin de fomulaire dans cette page car c'est juste un visuel de ce que j'ai dans ma table ticket c'est tout.
Enfette je t'explique : j'ai une page nouveauticket. php qui est un formulaire je rempli ce formulaire je l'envoi sa s'enregistre dans la base de donnée.
Ensuite je clique sur le lien tickets sa m'affiche tous les tickets tous simplement. -
-
-
je sais pas justement c'est que je cherche a faire depuis le debut d'aprem midi alors je vais les mettre dans le formulaire voir ce que sa donne.
-
Non, c'est un autre formulaire là.
Il faut que la visualisation des tickets soit dans un formulaire :
En gros il faut que tu rajoutes des balises form dans tickets.php et tu mets ça :foreach($_POST as $nom => $val) // Pour chaque valeur venant du formulaire { if(substr($nom,0,6)=="suppr_") // Si c'est une case à cocher de suppression { $cle = substr($nom,6); // On enlève suppr_ $IndexTicket = substr($cle,0,strpos($cle,"_")); // On récupère l'index $NumeroTicket = substr($cle,6); // On récupère le numéro mysql_query("DELETE FROM tb_ticket WHERE NumeroTicket=$NumeroTicket and IndexTicket=$IndexTicket"); // Suppression } }en début de fichier dans unif($_POST["nom_du_bouton_supprimer]){} -
J'avais bien compris ce que tu voulais faire, je ne suis pas débile...
<?php if($_POST["suppression"]) { foreach($_POST as $nom => $val) // Pour chaque valeur venant du formulaire { if(substr($nom,0,6)=="suppr_") // Si c'est une case à cocher de suppression { $cle = substr($nom,6); // On enlève suppr_ $IndexTicket = substr($cle,0,strpos($cle,"_")); // On récupère l'index $NumeroTicket = substr($cle,6); // On récupère le numéro mysql_query("DELETE FROM tb_ticket WHERE NumeroTicket=$NumeroTicket and IndexTicket=$IndexTicket"); // Suppression } } } ?> <form method="POST" action="tickets.php"> <table border="1"><tr> <th>Index ticket</th> <th>Numéro du ticket</th> <th>Nom du client</th> <th>Date du ticket</th> <th>Heure du Ticket</th> <th>Nom du Recepteur</th> <th>Interlocuteur client</th> <th>Sujet du ticket</th> <th>Affecté à</th> <th>Editer</th> </tr> <?php $retour = mysql_query('SELECT * FROM tb_ticket ORDER BY NumeroTicket ASC'); while ($donnees = mysql_fetch_array($retour)) // On fait une boucle pour lister les résultats { ?> <tr> <td><?php echo $donnees['IndexTicket']; ?></td> <td><?php echo $donnees['NumeroTicket']; ?></td> <td><?php echo $donnees['NomClient']; ?></td> <td><?php echo $donnees['DateTicket']; ?></td> <td><?php echo $donnees['HeureTicket']; ?></td> <td><?php echo $donnees['RecepteurTicket']; ?></td> <td><?php echo $donnees['InterlocuteurClient']; ?></td> <td><?php echo $donnees['SujetTicket']; ?></td> <td><?php echo $donnees['AffectationTicket']; ?></td> <td><input type='checkbox' name="suppr_\".$donnees["IndexTicket"]."_".$donnees["NumeroTicket"]'></td> </tr> <?php } // Fin de la boucle ?> </table> <P align=left> <center><input name="suppression" type=submit value="Supprimer"></center><br><br> <p align="center"><a href="index.php?erreur=logout"><strong>Vous déconnecter</strong></a></p> </form>
Essaye ça. -
C'est dans cette ligne :
<form method="POST" action="tickets.php">
qu'il faut que tu mettes la bonne page (celle de la page ou tu te trouves). -
je pensse que sa va vient lorsque qu'on clique sur supprimer il faut peut etre rajouter quelque chose au niveau de ce bouton pour que lorsqu'on clique sur supprimer sa va chercher le code qui permet de supprimer ? nan ?
Qu'est ce que t'en pensse ?
Ou alors mettre le code sur autre page qu'on appelle supprimer.php et on met le code dedans ou sur le form on renvoie ce code quand on clique sur supprimer ?
J'attends ton avis! ^^ -
Bon, teste les valeurs de retour avec des echo :
unecho "$nom $val<br />";
juste après le foreach
unecho "DELETE FROM tb_ticket WHERE NumeroTicket=$NumeroTicket and IndexTicket=$IndexTicket<br />"
avantmysql_query("DELETE FROM tb_ticket WHERE NumeroTicket=$NumeroTicket and IndexTicket=$IndexTicket"); -
re je voudrais savoir a quoi sert " $cle" !
Je voulais aussi te demander si on metté sa sur une autre page sa serez pa mieux ? -
if($_POST["suppression"]) { foreach($_POST as $nom => $val) // Pour chaque valeur venant du formulaire { echo "$nom $val<br />"; if(substr($nom,0,6)=="suppr_") // Si c'est une case à cocher de suppression { $cle = substr($nom,6); // On enlève suppr_ $IndexTicket = substr($cle,0,strpos($cle,"_")); // On récupère l'index $NumeroTicket = substr($cle,6); // On récupère le numéro echo "DELETE FROM tb_ticket WHERE NumeroTicket=$NumeroTicket and IndexTicket=$IndexTicket<br />"; mysql_query("DELETE FROM tb_ticket WHERE NumeroTicket=$NumeroTicket and IndexTicket=$IndexTicket"); // Suppression } } }
Si il n'y avait pas d'erreur avant, le echo ne peut pas faire d'erreur à moins biensur de ne pas mettre de ;-
oui j'ai du faire des oubli de guillemet
alors je fait la procedure et sa m'affiche sa :
suppr_\ on
DELETE FROM tb_ticket WHERE NumeroTicket= and IndexTicket=
suppression Supprimer
avec en dessous toujour le tableaux avec les ligne .- dans la source mes checkbox je retrouve sa :
<td><input type='checkbox' name="suppr_\".<?php$donnees["IndexTicket"]."_".$donnees["NumeroTicket"]?></td>
</tr>
p.s: je sais si je te l'ai deja di mais pour créer la case a cocher j'ai rajouter un champs dans la table ticket que j'ai appelé "EditerTicket" donc ce qui donne que au dessus de la case a coche on retrouve editer un ticket.
il faudrait peut s'en servir nan ? pour dir "si case a cocher et que click supprimer" alors supprimer la ligne sinon rien faire" quelque chose comme ca.
J'ai vu aussi sur un forum que la personne avait di de faire que quand la case est coché s'est egal a 1 sinon c'est 0 quand elle n'est pas cocher.
Donc ce qui donnerais : si case a cocher=1 et que click supprimer" alors supprimer la ligne(via la requete delete) sinon rien faire
-
-
La colonne que tu as rajouter dans la table ne sert à rien.
<td><input type='checkbox' name="suppr_<?php echo $donnees["IndexTicket"]."_".$donnees["NumeroTicket"]?>"</td>
Il faut que quand tu regardes la sources tu es :<input type='checkbox' name="suppr_A_32</td>
Sinon si ça ne marche pas remplace par :<?php echo "<td><input type='checkbox' name='suppr_".$donnees["IndexTicket"]."_".$donnees["NumeroTicket"]."'</td>
";
?>-
okok merci!
On y est presque lol parce que maintenan sa m'affiche sa :
suppr_A_1 on
DELETE FROM tb_ticket WHERE NumeroTicket= and IndexTicket=A
suppression Supprimer
le suppr A_1 correspond bien a l'index et au numeroticket donc il sait quelle ligne à été cocher!
cependant la ligne ne supprime pas il manque que sa la suppression .
-
-
Oups, c'est moi, remplace
$NumeroTicket = substr($cle,6);
par$NumeroTicket = substr($cle,strpos($cle,"_")+1);
et si ça ne marche pas par :$temp_pos = strpos($cle,"_")+1; $NumeroTicket = substr($cle,$temp_pos);