Rechercher : dans
Par :

Checkbox avec POST

Dernière réponse le 19 sep 2007 à 17:13:29 pitxu, le 18 sep 2007 à 14:20:59 
 Signaler ce message aux modérateurs

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" ?

Configuration: Windows XP
Firefox 2.0.0.6

Meilleures réponses pour « checkbox avec POST » dans :
Marquer un fil de discussion comme étant résolu VoirVous êtes inscrits en tant que membre Vous êtes le créateur du post mais vous n'êtes pas inscrit sur le site OU vous n'êtes pas le créateur du post Vous êtes le créateur du fil de discussion Vous êtes inscrits en tant que membre Vous...
Télécharger Aide-mémoire VoirCe logiciel permet de coller des aides mémoires (post-it) sur votre bureau. Son but est simple, éviter de décorer votre écran d'ordinateur avec de multiples postits. Caractéristiques Taille et couleur personnalisable Les aides mémoires peuvent...

1

pitxu, le 18 sep 2007 à 14:28:19

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>

Répondre à pitxu

2

Pi_Xi, le 18 sep 2007 à 15:05:57

Bonjour,

pourquoi tu veux les récupérer avec la valeur "off"? je ne vois pas l'intérêt. GoOgle est ton ami ;o)

Répondre à Pi_Xi

3

Dalida, le 18 sep 2007 à 15:19:34

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

[ Mathieu ]

"Les jeunes c'est l'insécurité
il faudrait tous les enfermer!" BxN 1985

Répondre à Dalida

4

pitxu, le 18 sep 2007 à 15:39:13

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.

Répondre à pitxu

6

Dalida, le 19 sep 2007 à 09:39:39

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.
[ Mathieu ]
"Les jeunes c'est l'insécurité
il faudrait tous les enfermer!" BxN 1985

Répondre à Dalida

5

Serge_La, le 18 sep 2007 à 21:07:37

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.

Répondre à Serge_La

7

pitxu, le 19 sep 2007 à 17:11:16

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.

Répondre à pitxu

8

 pitxu, le 19 sep 2007 à 17:13:29

Serge, non c'est normal chaque action sur un checkbox entraine le post du formulaire et une requete sql.

Répondre à pitxu
Collection CommentÇaMarche.net