Checkbox : Différencier non cochée et absente [php] - PHP - Programmation
Marsh Posté le 18-12-2008 à 15:49:43
Tu ne peux pas faire la différence entre case inexistante et case non cochée (ça vient du protocole HTTP (methodes GET et POST)).
Tu dois savoir avant si la case est censée être présente sur ta page, si oui et qu'aucune info n'est envoyée, ça veut dire qu'elle n'est pas cochée (il n'y a pas d'autre moyen simple).
Marsh Posté le 18-12-2008 à 15:50:46
Ou bien un champs hidden dans ton form qui est mis à jour en js et qui prend la valeur de ta case coche.
Par contre, ça nécessite js
Marsh Posté le 18-12-2008 à 17:13:40
heuu c'est très simple :
tu ajoutes un champs hidden par formulaire.
Dans le forumaire1 tu mets name="form1", dans le deuxième, name="form2"
Pour détecter lequel a été soumis, tu fais juste un check :
if(isset($_POST['form1']))
//traiter form 1
elseif(isset($_POST['form2']))
//traiter form2
else
//mettre les éventuelles valeurs par defaut dans tes forms
et si ta case est dans form1,
tu fais juste un if(empty($_POST['maCaseACocher'])) (qui se trouve dans le name="" )
dans le if(isset($_POST['form1'])) {}
et si tu veux en plus qu'elle te retourne une valeur (ex "oui" ) tu mets
<input type="checkbox" name="maCaseACocher" id="maCaseACocher" value="oui" />
[²]ortho+grammaire+expliquer mieux O_o
Marsh Posté le 18-12-2008 à 17:49:54
J'avais aussi la solution du JS mais bon, c'est pas top
C'est une case qui permet de choisir d'afficher ou de masquer des infos sur une page, page sur laquelle on retrouve des lignes de tableau avec dans chaque ligne un form ..
Bon, la solution la plus simple ne nécessitant pas de JS est donc de mettre 2 boutons radio "Afficher" et "masquer"
Marsh Posté le 18-12-2008 à 23:33:02
La plus simple c'est la checkbox, et c'est super facile:
cochée => tu reçois l'info en GET ou POST à la soumission du formulaire
pas cochée => tu reçois rien
Te reste plus qu'à verifier si tu reçois ou non pour décider...
Marsh Posté le 19-12-2008 à 07:34:55
vanadium a écrit : La plus simple c'est la checkbox, et c'est super facile: |
Merci de lire le sujet
C'est ce qu'il avait fait, et de ne rien recevoir lorsque la case n'est pas cochée lui pose problème. C'est le sujet initial du post.
Marsh Posté le 19-12-2008 à 16:34:02
J'ai très bien lu le sujet et je ne vois pas en quoi ça représente une difficulté, isset() ça existe en php, je vois pas comment on peut coder sans...
Marsh Posté le 19-12-2008 à 16:50:23
Dans le cas d'une checkbox non-cochée, avec isset ou quoi que ce soit, on en fait pas la différence entre "checkbox pas cochée" et "checkbox non présente initialement dans son formulaire". Et c'est ça le sujet initial du topic : faire la différence entre les deux.
Marsh Posté le 19-12-2008 à 16:53:30
vanadium a écrit : J'ai très bien lu le sujet ... |
Oui ok d'accord ... mais en fait non, toujours pas ...
Le isset() renverra false si la checkbox n'est pas cochée OU ( dans son cas ) si la checkbox n'existe pas dans le formulaire !
C'est cette différenciation qu'il veut faire ...
La solution de Corten me semblerait une bonne idée.
edit: grilled ! sorry !
Marsh Posté le 19-12-2008 à 16:54:49
Mr Mala a écrit : |
Merci, je me sens moins seul !
Marsh Posté le 19-12-2008 à 17:15:24
tu les affiches au chargement de la page je pense
rien ne t'empêche de serialisé dans une champ input de type hidden les nom des champs présents et de les récupérés après l'envoie du formulaire par un explode
Marsh Posté le 03-03-2010 à 14:12:39
Le poste date un peu, mais comme j'ai trouvé une solution (sans javascript), je la transmet !
J'ai eu exactement le même problème : je voulais savoir si une checkbox avait été cochée ou non dans un formulaire et obtenir en retour 0 ou 1 ! Le fait qu'une checkbox non cochée ne renvoie rien me gênait car je ne pouvais prévoir si la checkbox était affichée ou non (génération automatique) dans le formulaire de saisie.
Voici l'astuce pour contourner le problème:
<input type="hidden" name="myCheckbox" value="0" />
<input type="checkbox" name="myCheckbox" value="1">
Si la checkbox n'est pas cochée, l'input de type hidden est renvoyé. Si la checkbox est cochée, l'input de type checkbox est prioritaire (car placé en deuxième, l'ordre d'écriture est donc important !)
Le fait de préciser value="1" dans le checkbox force la valeur de la variable retournée à 1 si la checkbox a été cochée (sinon, par défaut, la valeur retournée est "on" )
J'espère que cette astuce en aidera plusieurs !
Marsh Posté le 18-12-2008 à 15:14:35
Bonjour, en php5, je me trouve confronté à un soucis.
Une page avec plusieurs formulaires (dont un avec une checkbox)
J'aimerai pouvoir faire la différence entre "on a validé le formulaire dans lequel il y avait la textbox, mais elle n'était pas cochée" et "on a validé un autre formulaire" (et on s'en fiche de la texbox).
Le soucis c'est que si la case n'est pas cochée la variable n'existe même pas dans le $_POST on dirait
---------------
Gamertag : Getget94 - PSN : Getget1980 - Nintendo Network : Getget1980 - Uplau : Getget1980