Checkbox avec POST

Résolu
pitxu Messages postés 689 Date d'inscription   Statut Membre Dernière intervention   -  
pitxu Messages postés 689 Date d'inscription   Statut Membre Dernière intervention   -
Slt,

j'ai un petit souci avec les checkbox :

j'ai un formulaire avec 3 checkbox, lorsque je sélectionne l'une d'entre elles je déclenche l'envoie du formulaire avec un onClick="FORM.submit();"

Seule la checkbox sélectionné est "posté" avec la valeur "on".

Comment faire pour que les 2 autres checkbox soient postés avec la valeur "off" ?
A voir également:

6 réponses

pitxu Messages postés 689 Date d'inscription   Statut Membre Dernière intervention   95
 
J'ai jamais décrit de comportement de boutons radio, 1 on et 2 off c'etait pour l'exemple, on pourrait très bien avoir 2 on et 1 off.

J'explique :

restriction d'acces à des repertoires avec sql

login pass mail rep1 rep2 rep3
toto titi toto@toto.fr 1 0 1

Si =1 la case est cochée, si =0 elle n'est pas cochée.

Je veux ,avec un clic pour cocher ou décocher, générer une requête SQL qui mettra la table à jour.

Voilà pourquoi je souhaite récupérer toutes les valeurs des cases à cocher.
4
Dalida Messages postés 6728 Date d'inscription   Statut Contributeur Dernière intervention   922
 
salut,

la valeur renvoyée elle-même, on s'en tape.
tu pourrais vouloir 1 = 'casimir' et 2 = 'pandi panda' que je te dirais la même chose !

tu décris :
Seule la checkbox sélectionné est "posté" avec la valeur "on".
Comment faire pour que les 2 autres checkbox soient postés avec la valeur "off" ?


si à cela on ajoute le déclenchement du 'submit()' sur 'onChange' et cela fait que tu as 3 options mais que seule une et une seule peut être cochée.

propositions multiples + choix libre = checkbox :
Les cases à cocher (et les boutons « radio ») sont des interrupteurs marche/arrêt qui peuvent être actionnés par l'utilisateur. L'interrupteur est sur « marche » quand l'attribut checked de l'élément de commande est spécifié. Lors de la soumission du formulaire, seules les commandes de cases à cocher sur « marche » peuvent devenir des commandes réussies.
Dans un formulaire, plusieurs cases à cocher peuvent partager le même nom de commande. Ainsi, par exemple, les cases à cocher permettent aux utilisateurs de sélectionner plusieurs valeurs pour la même propriété. On utilise l'élément INPUT pour créer une commande de case à cocher.


propositions multiples + choix unique = radio.
Les boutons « radio » sont analogues aux cases à cocher, à la différence que, quand plusieurs boutons partage le même nom de commande, alors ils s'excluent mutuellement : quand l'un est mis sur « marche », tous les autres avec le même nom se mettent sur « arrêt ».

et pour savoir comment poster les valeurs qui ne sont pas cochées, pour moi c'est un problème qui ne pose pas puisque tu sais déjà qui est coché.
si dans ton script tu testes chaque valeur tu sauras que valeur renvoyée = 'on', sinon valeur = 'off'.
if (isset($_POST['check1']))
{
        $value1 = 'on';
        $value2 = 'off';
        $value3 = 'off';
}
else if (isset($_POST['check2']))
{
        $value1 = 'off';
        $value2 = 'on';
        $value3 = 'off';
}
elseif (isset($_POST['check3']))
{
        $value1 = 'off';
        $value2 = 'off';
        $value3 = 'on';
}

donc si tu veux toujours déclencher l'envoi sur le changement de valeur des checkbox, je répète et je maintiens qu'il ne sert à rien de vouloir envoyer les valeurs non cochées puisque tu peux les évaluer dans le script cible du formulaire.
0
Serge_La Messages postés 407 Date d'inscription   Statut Membre Dernière intervention   47
 
Bonjour pitxu,
il y a un problème avec ton code. Dès que quelcun fait un déclic sur n'importe quelle case, le submit se déclenche. Il faut d'abord laisser les gens choisir les cases et ensuite déclcencher submit avec un bouton soumettre.

Serge.
2
pitxu Messages postés 689 Date d'inscription   Statut Membre Dernière intervention   95
 
Dalida, je suis d'accord avec toi ... en partie.

Vous n'avez visiblement jamais développé un tableau avec des checkbox dynamiques sinon vous seriez au jus.

Comment détectes-tu qu'une checkbox a été décoché ?

ou comment fais-tu la différence entre une check box décoché et la première visite sur la page ou rien n'est posté ?
if (!isset($checkbox1)) { ....} ne fait pas la différence.

Ce que vous dites est vrai ... pour du statique, pas pour du dynamique.

La solution, je vous la donne puisqu'on m'a répondu sur un autre forum :

<input type="checkbox" name="checkbox1" onClick="document.form1.chk1.value=1;form1.submit();">
<input type="hidden" name="chk1" value="">

Ainsi, peu importe la valeur du checkbox, il ne nous sert qu'à afficher les valeurs relatives à la base de données SQL et à déclencher le POST. Les champs hidden seront postés indépendamment et c'est sur leur propriété value qu'on pourra effectuer des tests.
2
pitxu Messages postés 689 Date d'inscription   Statut Membre Dernière intervention   95
 
Pour être plus clair :

<?
if (isset($_POST)) extract ($_POST);
if (isset($checkbox1) || isset($checkbox2) || isset($checkbox3)) phpinfo(INFO_VARIABLES);
?>
<form name="form1" method="post" action="test.php">
<input type="checkbox" name="checkbox1" onClick="form1.submit();">
<input type="checkbox" name="checkbox2" onClick="form1.submit();">
<input type="checkbox" name="checkbox3" onClick="form1.submit();">
</form>
1
Pi_Xi Messages postés 2244 Date d'inscription   Statut Membre Dernière intervention   149
 
Bonjour,

pourquoi tu veux les récupérer avec la valeur "off"? je ne vois pas l'intérêt.
0

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

Posez votre question
Dalida Messages postés 6728 Date d'inscription   Statut Contributeur Dernière intervention   922
 
salut,

je reprends la remarque de Pi_Xi, quel intérêt ?
si l'un est à 'on' les deux autres sont à 'off', pas la peine de balader la valeur.

et tu décris là un comportement de boutons radio. un seul cliqué avec une valeur 'on', tous les autres à 'off'.

1
pitxu Messages postés 689 Date d'inscription   Statut Membre Dernière intervention   95
 
Serge, non c'est normal chaque action sur un checkbox entraine le post du formulaire et une requete sql.
0