Récupération de checkbox en "foreach"
Résolu/Fermé
PaulCézanne
Utilisateur anonyme - 24 nov. 2013 à 22:44
- Messages postés
- 583
- Date d'inscription
- samedi 27 janvier 2007
- Statut
- Membre
- Dernière intervention
- 30 décembre 2019
Utilisateur anonyme - 24 nov. 2013 à 22:44
A voir également:
- Récupérer plusieurs valeurs checkbox php
- Récupération de checkbox en "foreach" ✓ - Forum - PHP
- Récupérer valeur checkbox php ✓ - Forum - PHP
- Récupérer valeur checkbox vba ✓ - Forum - VB / VBA
- [PHP] Récuperer la valeur d'une checkbox ✓ - Forum - PHP
- Comment récupérer les données des cases à cocher ? ✓ - Forum - VB / VBA
6 réponses
Bonjour
Tu n'enregistres pas les valeurs de chacun, tu fais toujours une même mise à jour car ton UPDATE a une condition WHERE id='$id'.
Tu fais très probablement bien toutes les mises à jour, mais comme tu les fais toutes sur le même enregistrement, normal que tu ne voies que la dernière valeur.
Il y a un problème de logique dans ce que tu cherches à faire. Il faut peut-être que tu balayes ton formulaire pour insérer les lignes correspondant à des options nouvellement cochées, et supprimer de la base les lignes correspondant à des options qui ne sont plus cochées. Mais je dis ça sans savoir ce que tu cherches vraiment à faire.
Tu n'enregistres pas les valeurs de chacun, tu fais toujours une même mise à jour car ton UPDATE a une condition WHERE id='$id'.
Tu fais très probablement bien toutes les mises à jour, mais comme tu les fais toutes sur le même enregistrement, normal que tu ne voies que la dernière valeur.
Il y a un problème de logique dans ce que tu cherches à faire. Il faut peut-être que tu balayes ton formulaire pour insérer les lignes correspondant à des options nouvellement cochées, et supprimer de la base les lignes correspondant à des options qui ne sont plus cochées. Mais je dis ça sans savoir ce que tu cherches vraiment à faire.
PaulCézanne
24 nov. 2013 à 19:23
- Messages postés
- 583
- Date d'inscription
- samedi 27 janvier 2007
- Statut
- Membre
- Dernière intervention
- 30 décembre 2019
24 nov. 2013 à 19:23
Bonjour et merci de ta réponse.
Le WHERE est là pour indiquer sur quel ligne de ma table je vais enregistrer l'état de mes checkbox.
Les champs que je souhaite enregistrer sont sur une même ligne (d'ou la clause WHERE).
Ce que je cherche à faire c'est enregistrer le bon VALUE correspondant au checkbox coché.
Le WHERE est là pour indiquer sur quel ligne de ma table je vais enregistrer l'état de mes checkbox.
Les champs que je souhaite enregistrer sont sur une même ligne (d'ou la clause WHERE).
Ce que je cherche à faire c'est enregistrer le bon VALUE correspondant au checkbox coché.
Alors il faut mettre 3 variables différentes pour tes 3 champs...
pas besoin de foreach :
</code>
pas besoin de foreach :
<?php $val1 =isset($_POST['SMARTJOG'][0]) ? 1:0; $val2 =isset($_POST['SMARTJOG'][1]) ? 2:0; $val3 =isset($_POST['SMARTJOG'][2]) ? 3:0; $sql = "UPDATE etats_films SET etat_smartjog_vo='$val1' , etat_smartjog_vf='$val2', etat_smartjog_3d='$val3' WHERE id='$id'";
</code>
PaulCézanne
24 nov. 2013 à 21:11
- Messages postés
- 583
- Date d'inscription
- samedi 27 janvier 2007
- Statut
- Membre
- Dernière intervention
- 30 décembre 2019
24 nov. 2013 à 21:11
Ouaip j'y ai pensé mais je pense que ça fait plus propre de faire un FOREACH et puis on gagne en rapidité.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
On peut effectivement le faire aussi le faire avec un foreach mais je me permets deux remarques :
- "plus propre" : ça fait très bien d'employer cette expression, mais ça ne veut pas dire grand chose. Surtout si ça t'amène à écrire un code incorrect, comme c'est le cas. Ce sont les gens qui veulent justifier leurs habitudes mais qui n'ont pas de bons arguments qui disent qu'ils font comme ça "parce que c'est plus propre".
- En ce qui concerne la rapidité, c'est exactement le contraire : avec un foreach, ton code sera plus lent que celui que je t'ai donné, à coup sûr. Ce qui n'est pas grave du tout d'ailleurs, la différence étant imperceptible.
Le seul argument à peu près valable que tu aurais pu donner c'est qu'avec un foreach, le code est plus court, mais dans ce cas précis c'est loin d'être évident.
- "plus propre" : ça fait très bien d'employer cette expression, mais ça ne veut pas dire grand chose. Surtout si ça t'amène à écrire un code incorrect, comme c'est le cas. Ce sont les gens qui veulent justifier leurs habitudes mais qui n'ont pas de bons arguments qui disent qu'ils font comme ça "parce que c'est plus propre".
- En ce qui concerne la rapidité, c'est exactement le contraire : avec un foreach, ton code sera plus lent que celui que je t'ai donné, à coup sûr. Ce qui n'est pas grave du tout d'ailleurs, la différence étant imperceptible.
Le seul argument à peu près valable que tu aurais pu donner c'est qu'avec un foreach, le code est plus court, mais dans ce cas précis c'est loin d'être évident.
PaulCézanne
24 nov. 2013 à 22:31
- Messages postés
- 583
- Date d'inscription
- samedi 27 janvier 2007
- Statut
- Membre
- Dernière intervention
- 30 décembre 2019
24 nov. 2013 à 22:31
Hmm très bien.
J'ai donc fait avec ton code.
Merci de ton aide ;-)
J'ai donc fait avec ton code.
Merci de ton aide ;-)