Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2938 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [php] Checkbox : Différencier non cochée et absente

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[php] Checkbox : Différencier non cochée et absente

n°1829032
getget
Il y en a qui ont essayé ...
Posté le 18-12-2008 à 15:14:35  profilanswer
 

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
mood
Publicité
Posté le 18-12-2008 à 15:14:35  profilanswer
 

n°1829075
superbob56
Posté le 18-12-2008 à 15:49:43  profilanswer
 

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).
 


---------------
By bob.
n°1829077
kao98
...
Posté le 18-12-2008 à 15:50:46  profilanswer
 

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 :spamafote:


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
n°1829154
Profil sup​primé
Posté le 18-12-2008 à 17:13:40  answer
 

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


Message édité par Profil supprimé le 18-12-2008 à 17:26:09
n°1829182
getget
Il y en a qui ont essayé ...
Posté le 18-12-2008 à 17:49:54  profilanswer
 

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" :D


---------------
Gamertag : Getget94 - PSN : Getget1980 - Nintendo Network : Getget1980 - Uplau : Getget1980
n°1829330
vanadium
N° Atomique : 23
Posté le 18-12-2008 à 23:33:02  profilanswer
 

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...

n°1829354
kao98
...
Posté le 19-12-2008 à 07:34:55  profilanswer
 

vanadium a écrit :

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...


Merci de lire le sujet   :sarcastic:  
 
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.


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
n°1829623
vanadium
N° Atomique : 23
Posté le 19-12-2008 à 16:34:02  profilanswer
 

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...

n°1829629
kao98
...
Posté le 19-12-2008 à 16:50:23  profilanswer
 

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.


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
n°1829632
Mr Mala
Posté le 19-12-2008 à 16:53:30  profilanswer
 

vanadium a écrit :

J'ai très bien lu le sujet ...


 
Oui ok d'accord ... mais en fait non, toujours pas ... :sarcastic:  
 
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 !

Message cité 1 fois
Message édité par Mr Mala le 19-12-2008 à 16:53:52
mood
Publicité
Posté le 19-12-2008 à 16:53:30  profilanswer
 

n°1829633
kao98
...
Posté le 19-12-2008 à 16:54:49  profilanswer
 

Mr Mala a écrit :


 
Oui ok d'accord ... mais en fait non, toujours pas ... :sarcastic:  
 
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 !


Merci, je me sens moins seul ! ;)


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
n°1829638
ionik
Posté le 19-12-2008 à 17:15:24  profilanswer
 

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


---------------
Recette cookeo Recette de cuisine
n°1970853
joshua069
Posté le 03-03-2010 à 14:12:39  profilanswer
 

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 !


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [php] Checkbox : Différencier non cochée et absente

 

Sujets relatifs
Boucle avec Checkbox[JS] Connaître la valeur d'une checkbox
Activer un checkbox[NSIS] CheckBox le + simple, ajout de checkbox au dernier ecran
setAutoCreateRowSorter JTable avec checkBoxVérifier si une checkbox est disabled
Récupérer checkbox par mail phpTester la valeur d'une checkbox et envoi de mail
[HTML][JavaScript] Problème d'accès à l'état d'une checkbox via JScheckbox dans select(Liste déroulante)
Plus de sujets relatifs à : [php] Checkbox : Différencier non cochée et absente


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR