PHP Case a cocher

Fermé
lamzo74 - 23 janv. 2009 à 14:24
 lamzo74 - 26 janv. 2009 à 16:51
Bonjour,

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
A voir également:

16 réponses

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 .
1
Mikey_UFC Messages postés 312 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 2 août 2010 1
23 janv. 2009 à 15:23
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
0
slt

merci de ta réponse

desolé mais tu va trop vite pour moi je débute en php. ^^
0
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
0
desolé j oublié de presicé dans ma table ma clé primaire est formé de 2 champ: IndexTicket et NumeroTicket.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mikey_UFC Messages postés 312 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 2 août 2010 1
23 janv. 2009 à 15:56
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
}
}
0
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 ?
0
Mikey_UFC Messages postés 312 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 2 août 2010 1 > MIKA
23 janv. 2009 à 16:10
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 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
}
}
0
MIKA > Mikey_UFC Messages postés 312 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 2 août 2010
23 janv. 2009 à 16:13
En gros indexticket et numeroticket dans un tableau sa donne sa : A0125
A0126
L'indexticket qui est A ici ne change jamais j'ai crée 2 champ pour la clé primaire parce que le numeroticket s'incremente et avec le A devant sa marchais c'est pour cela que j crée une clé primaire a 2 champ
0
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
0
Mikey_UFC Messages postés 312 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 2 août 2010 1
23 janv. 2009 à 16:33
C'est quoi qui ne marche pas ?
0
MIKA > Mikey_UFC Messages postés 312 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 2 août 2010
23 janv. 2009 à 16:37
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>
0
Mikey_UFC Messages postés 312 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 2 août 2010 1 > MIKA
23 janv. 2009 à 16:41
Je ne vois pas ton formulaire <form></form>, il est ailleurs ? ?
0
MIKA > Mikey_UFC Messages postés 312 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 2 août 2010
23 janv. 2009 à 16:44
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.
0
Mikey_UFC Messages postés 312 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 2 août 2010 1 > MIKA
23 janv. 2009 à 16:47
Si tes cases à cocher ne sont pas dans un formulaire comment tu fais pour les submit et pour pouvoir supprimer tes tickets ?

Et pourtant, tu as bien mis un bouton de type submit pour envoyer ton formulaire.
Change son nom d'ailleurs.
0
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.
0
Mikey_UFC Messages postés 312 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 2 août 2010 1
23 janv. 2009 à 17:02
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 un
if($_POST["nom_du_bouton_supprimer]){}
0
Mikey_UFC Messages postés 312 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 2 août 2010 1
23 janv. 2009 à 17:22
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.
0
il me dit qu'il y a une erreur a cette ligne :

if($_POST["suppression"])
0
Mikey_UFC Messages postés 312 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 2 août 2010 1 > MIKA
23 janv. 2009 à 17:43
Remplace par ça :
if(isset($_POST) && $_POST["suppression"])
0
lamzo74 > Mikey_UFC Messages postés 312 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 2 août 2010
26 janv. 2009 à 09:11
bonjour

j'ai bien remplacé par ce que tu m'avais donnée mais lorsque je clique sur supprimé sa m'envoie vers une otre page qui ne trouve pas.
on dirait qu'il recherche une page !!
voila si t'est toujour la ou que quelqu'un d'autre puisse m'aider sa serez tres jentil de votre part merci beaucoup.
0
Mikey_UFC Messages postés 312 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 2 août 2010 1
26 janv. 2009 à 09:42
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).
0
Tout merci de ton aide c 'est jenti ta part :

oui

j'ai deja modifier par la bonne page mais sa essaye toujour de m'envoyer sur une autre page qui me di introuvable!

<form method="POST" action="LesTickets.php">
0
Mikey_UFC Messages postés 312 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 2 août 2010 1 > lamzo74
26 janv. 2009 à 10:07
Quelle page ?
0
lamzo74 > Mikey_UFC Messages postés 312 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 2 août 2010
26 janv. 2009 à 10:10
comment sa quelle page ? .....
0
Mikey_UFC Messages postés 312 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 2 août 2010 1 > lamzo74
26 janv. 2009 à 10:16
Quelle page est introuvable ? quelle URL ?
0
lamzo74 > Mikey_UFC Messages postés 312 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 2 août 2010
26 janv. 2009 à 10:19
sa me m'afficher sa une page vierge avec comme titre :
HTTP 404 Non trouvé

et dans l url il y a bien la page concerné : http://localhost/test/LesTickets.php
0
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! ^^
0
Mikey_UFC Messages postés 312 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 2 août 2010 1
26 janv. 2009 à 10:38
Bon, teste les valeurs de retour avec des echo :
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");
0
non il me met une faute a chaque endroit ou il y a le echo !
0
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 ?
0
Mikey_UFC Messages postés 312 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 2 août 2010 1
26 janv. 2009 à 10:59
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 ;
0
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 .
0
Mikey_UFC Messages postés 312 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 2 août 2010 1 > lamzo74
26 janv. 2009 à 11:09
Il doit y avoir une erreur dans le nom des checkbox.
Affiche le code source de ta page web : (click droit => afficher la source) et vérifie que le nom de tes checkbox est de la forme :
suppr_XXXX_YYYY ou XXXX est l'indexTicket et YYYY le numéroTicket ou inversement.
0
lamzo74 > Mikey_UFC Messages postés 312 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 2 août 2010
26 janv. 2009 à 11:18
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
0
lamzo74 > Mikey_UFC Messages postés 312 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 2 août 2010
26 janv. 2009 à 11:20
Et Au niveau du suppr j'ai sa dans le code source :

</head>
suppr_\ on<br />DELETE FROM tb_ticket WHERE NumeroTicket= and IndexTicket=<br />suppression Supprimer<br /><form method="POST" action="?page=4">
0
Mikey_UFC Messages postés 312 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 2 août 2010 1
26 janv. 2009 à 11:39
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>
";
?>
0
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 .
0
Mikey_UFC Messages postés 312 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 2 août 2010 1
26 janv. 2009 à 11:56
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);
0
c'est ce que j'ai fait, le numero ticket s'affiche maintenan mais sa ne supprime toujour pas la ligne
suppr_A_1 on
DELETE FROM tb_ticket WHERE NumeroTicket=1 and IndexTicket=A
suppression Supprimer

avec le tableau en dessous.
0
Il me di aussi qu'il y a une faute a cette ligne decidement il aime pas cette ligne ^^:

if(isset($_POST) && $_POST["suppression"])
0
Mikey_UFC Messages postés 312 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 2 août 2010 1 > lamzo74
26 janv. 2009 à 14:07
C'est quoi le message d'erreur ?
0
lamzo74 > Mikey_UFC Messages postés 312 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 2 août 2010
26 janv. 2009 à 14:09
le message d'erreur c'est celui la :

Notice: Undefined index: suppression in F:\Program Files\wamp\www\test\pages\LesTickets.php on line 18
0
Mikey_UFC Messages postés 312 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 2 août 2010 1 > lamzo74
26 janv. 2009 à 14:17
alors remplace par if(isset($_POST["suppression"])
0