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.
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 .
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionA 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
}
}
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 ticket
DELETE 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
}
}
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
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>
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.
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 un if($_POST["nom_du_bouton_supprimer]){}
<?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.
<form method="POST" action="tickets.php">qu'il faut que tu mettes la bonne page (celle de la page ou tu te trouves).
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! ^^
un
echo "$nom $val<br />";juste après le foreach
un
echo "DELETE FROM tb_ticket WHERE NumeroTicket=$NumeroTicket and IndexTicket=$IndexTicket<br />"
avant
mysql_query("DELETE FROM tb_ticket WHERE NumeroTicket=$NumeroTicket and IndexTicket=$IndexTicket");
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 ;
<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
<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>";
?>
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 .