Comment savoir quelle case sont cochées ? - PHP - Programmation
Marsh Posté le 16-11-2003 à 16:13:56
Michrone a écrit : Bonjour,
|
Imaginons que tu aies 10 cases à cocher.
Elles ont pour name="case1", name="case2" etc...
Pour récupérer les valeurs, tu fais donc une boucle qui va lister la récupération de chaque $_POST[case1] $_POST[case2] etc...
Donc, tu vas devoir utiliser une variable dynamique. genre : ${"case".$i} ou $i représente le compteur dans ta boucle.
Marsh Posté le 16-11-2003 à 16:15:23
Ok. J'avais essayer cela, mais j'obtenais toujours une erreur PHP. J'ai dû mal m'y prendre.
Marsh Posté le 16-11-2003 à 16:32:50
n'oublie pas que si une checkbox est cochée, la variable $_POST['caseX'] aura comme valeur "on". Sinon elle sera vide.
Marsh Posté le 16-11-2003 à 16:46:06
Ayuget a écrit : n'oublie pas que si une checkbox est cochée, la variable $_POST['caseX'] aura comme valeur "on". Sinon elle sera vide. |
elle aura surtout la valeur qu'il aura indiqué avec value...
Marsh Posté le 16-11-2003 à 16:48:44
Décidément, je pige rien..
Au moment de la cr&ation de mon tableau, j'ai donc ajouter ceci
$num = $row['id'];
echo '<td><input name=${"evenement".$num} type=checkbox value "0">';
Je suppose que X case à cocher sont créées, et qu'elle s'appelle evenementX (X représente un nombre)
Je ne connais pas ce nombre à l'avance.
Ensuite, quand je fais un
echo $_POST["evenement46"]; je reçois:
Notice: Undefined index: evenement46 in ...
Je sais que l'élément 46 a dû être créer(puisque $row['id'] 46 existe)
Si je fais
echo $evenement46;
Là, c'est
Notice: Undefined variable: evenement46;
Marsh Posté le 16-11-2003 à 16:54:25
Pareil:
Undefined variable: evenement2
Pourtant, l'indice 2 est bien le dernier élément de mon tableau.
Marsh Posté le 16-11-2003 à 17:24:41
Si c'est pas coché, il me semble que la case du tableau est pas créé.
Marsh Posté le 16-11-2003 à 17:43:56
ReplyMarsh Posté le 16-11-2003 à 18:27:13
Y a une "astuce" avec les cases à cocher.
Pour une case ayant le nom nom_case et la valeur value_case :
- si elle est cochée -> il existe un $_POST['nom_case'], qui a la valeur 'value_case'
- si elle n'est pas cochée, il n'y a rien
if (isset($_POST['nom_case'])) {
echo "case cochée, avec la valeur " . $_POST['nom_case'];
} else {
echo "la case n'était pas cochée";
}
Marsh Posté le 16-11-2003 à 18:42:21
Rien à faire.
Visiblement, c'est à la création de ma variable que ça nje va pas.
Je dois donc créer x checkbox.
Il a l'air de le faire, mais quand j'essaie de "lire" leur valeur, il considère toujours qu'elles sont "pas cochée".
A mon avis, elles sont "pas cochées" parce qu'elles n'existent pas...
J'ai fait(entre autre)
echo '<td><input name=${"evenement".$num} type=checkbox value "0">';
J'espèrais avoir
evenment1
evenment2
evenement46
Mais apparement, ce n'est pas le cas.
Existe-til une possibilité pour voir ce qui est créé ?
Marsh Posté le 16-11-2003 à 18:45:53
Déja, vérifie que le code HTML du formulaire est bon. (dans le navigateur, affichage->source)
Marsh Posté le 16-11-2003 à 18:46:23
Michrone a écrit :
|
N'importe quoi franchement.
Code :
|
Essayes ça déjà...
Marsh Posté le 16-11-2003 à 18:49:17
value=\"0\", non ? Paske sans le =, j'sais pas si le browser va être hyper d'accord
Marsh Posté le 16-11-2003 à 18:49:25
J'avais dit que j'y connaissais rien...
Sinon, ça fait ça quand je tape ton code:
Notice: Undefined variable: evenement47
etc etc pour les autres numéros.
Ils doivent servirent à quoi les \ et "" que tu as ajouter ?
Marsh Posté le 16-11-2003 à 18:55:49
Version corrigée :
Code :
|
Et maintenant ?
Marsh Posté le 16-11-2003 à 18:59:32
Tu as vérifié que le code HTML du formaulaire était bon ?
Ca ne sert à rien de tester la réception si le formulaire n'est pas correct
Marsh Posté le 16-11-2003 à 19:02:26
Tiens oui d'ailleurs... Poste nous le code complet pour une fois, parce que je sens que sinon, demain on sera toujours là...
Marsh Posté le 17-11-2003 à 17:13:11
Voilà le code complet de la page:
Code :
|
Le formulaire est affiché correctement avec ce code.(enfin, en apparence, j'obtiens bien ce que je veux)
Marsh Posté le 17-11-2003 à 22:31:24
Ayuget a écrit : n'oublie pas que si une checkbox est cochée, la variable $_POST['caseX'] aura comme valeur "on". Sinon elle sera vide. |
pour utiliser comme variable $_POST['caseX'] il faut que le php.ini soit sur "off" dans register_globals nan
parcque sur ovh par ex c'est "on" alors que quand t'installe easyphp 1.7 c'est sur "off"
combien ça ma fait perdre du temps ça
Marsh Posté le 17-11-2003 à 22:37:38
noizing a écrit : |
Tu peux utiliser $_POST que ce soit on ou off, mais si c'est off, c'est le seul moyen (en dehors de $HTTP_POST_VARS) de récupérer les donné passé en post.
Marsh Posté le 18-11-2003 à 10:01:01
Tu peux faire comme ça sinon =>
Code :
|
et :
Code :
|
En gros tu donnes le meme nom a toutes tes checkboxes => checkbox_name[] et ensuite tu utilises un foreach pour recuperer toutes les values. Dans ton cas c'est surement plus pratique d'utiliser un array html pour recuperer ta liste de noms.
Marsh Posté le 18-11-2003 à 10:57:27
+1, c'est comme çà qu'il faut faire avec les checkbox/radio !
Marsh Posté le 18-11-2003 à 20:54:21
impulse a écrit : ... |
intéressant
Marsh Posté le 18-11-2003 à 22:58:50
ReplyMarsh Posté le 19-11-2003 à 13:12:43
mrBebert a écrit : c'est un plus appréciable |
Surtout que quand le nombre de case à cocher n'est jamais le meme (formulaire généré dynamiquemen), ca doit etre une galere pas possible car le script de traitement du formulaire ne sait pas combien il doit tester de valeurs, alors qu'avec un tableau c tout bete
Marsh Posté le 16-11-2003 à 16:10:58
Bonjour,
Etant enièrement débuttant en php, ma question risque de paraitre simple (voir simpliste).
J'ai fait un query me renvoyant une liste de nom. J'affiche cette liste dans une page(via un FORM), et à coté de chaque nom, je met une case à cocher. en dessous se trouve un bouton 'supprimer'.
Lorsque l'on clique sur le bouton, ca doit supprimer les enregistrement qui sont coché.
Ma question est la suivante: Comment faire pour connaitre les élément coché ?
Mon query avec l'affichage du tableau(en résumé)
Un lien vers une page qui fait ça simplement devrait déjà m'aider largement.
Message édité par Michrone le 16-11-2003 à 16:13:10