IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Récupérer les valeurs checkbox


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 100
    Par défaut Récupérer les valeurs checkbox
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <? 
    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>
    Je souhaiterai savoir comment faire en sorte pour que la valeur des checkbox qui ne sont pas cochés soient postés ?

  2. #2
    Membre expérimenté
    Inscrit en
    Janvier 2004
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 242
    Par défaut
    Et si tu leur mettais une valeur à tes checkbox et tu contrôlais cette valeur en php ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 100
    Par défaut
    même si j'affecte une valeur avec la propriété value, seules les cases cochées postent la valeur définie par value.

    Il faudrait faire une détection javascript du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if (document.getElementByName("checkbox1").checked = false) {
    	document.getElementByName("checkbox1").value="off";
    }
    seulement je n'arrive pas à affecter la valeur à une variable qui n'existe pas

  4. #4
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    Seules les valeurs des checkboxes cochées sont postées donc tu n'as pas vraiment le choix.
    Tu peux par contre bricoler deux choses :
    1/ tu te fais un champ hidden qui contient toutes les valeurs de tes checkboxes séparées par un caractère/une suite de caractères spécial(e) donc coté serveur tu peux les récupérer
    2/ Tu coches volontairement en javascript toutes les cases => tu es donc obligé de te rajouter un deuxieme champ caché (pour chaque checkboxe) qui va te dire quelles checkboxes étaient réellement cochées (LOURD et pas top)
    3/ Pour chaque checkboxe, tu associes un champ "hidden" du style macheckbox1, macheckbox2, ... qui contient la valeur de la checkbox et du coup coté client tu peux les récupérer facilement avec un foreach

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 100
    Par défaut
    Merci pour ta réponse, je vais explorer les différentes solutions.

    Mais je crois que j'en ai une 4e :

    - 2 fichiers gif => une case à a coché vide et une autre sélectionné
    - on attributs un input type="hidden" à chaque image
    - et on utilise du js pour changer l'image en fonction de la valeur affectée par hidden

    Je pensais pas rester bloquer sur un pauvre script pour rendre des checkbox dynamiques.

    Je mettrai le post en résolu avec une des soluces.

  6. #6
    Membre expérimenté
    Inscrit en
    Janvier 2004
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 242
    Par défaut
    Citation Envoyé par pitxu Voir le message
    même si j'affecte une valeur avec la propriété value, seules les cases cochées postent la valeur définie par value.

    Il faudrait faire une détection javascript du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if (document.getElementByName("checkbox1").checked = false) {
    	document.getElementByName("checkbox1").value="off";
    }
    seulement je n'arrive pas à affecter la valeur à une variable qui n'existe pas
    ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <input type="checkbox" name="checkbox1" onClick="form1.submit();" value="1"> 
     
    <?
    if ($_POST['checkbox1']=='1'){
      // c'est coché
    }
    ?>

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 100
    Par défaut
    C'est l'inverse qu'on veut :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <form name="form1" method="post" action="test.php">
    <input type="checkbox" name="checkbox1" onClick="form1.submit();" value="0" checked> 
    </form>
    <?
    if ($_POST['checkbox1']=='0'){
      echo "case décoché";
    }
    ?>
    ça ne marche pas car checkbox1 n'est pas posté, car décoché.

  8. #8
    Membre expérimenté
    Inscrit en
    Janvier 2004
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 242
    Par défaut
    Citation Envoyé par pitxu Voir le message
    C'est l'inverse qu'on veut :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <form name="form1" method="post" action="test.php">
    <input type="checkbox" name="checkbox1" onClick="form1.submit();" value="0" checked> 
    </form>
    <?
    if ($_POST['checkbox1']=='0'){
      echo "case décoché";
    }
    ?>
    ça ne marche pas car checkbox1 n'est pas posté, car décoché.
    Donc fait l'inverse,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if ($_POST['checkbox1']!='1'){
      echo 'case décoché';
    }
    Edit : ok ça me parait évidant, mais j'avoue que pour les débutants c'est pas le truc que l'on pense instinctivement

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 100
    Par défaut
    La solution avec les input hidden :

    <form name="form1" method="post" action="test.php">
    <input type="checkbox" name="checkbox1" onClick="document.form1.check1.value=1;form1.submit()"><input type="hidden" name="check1" value="">
    </form>

    On ne se sert de la checkbox que pour l'affichage du résultat sql (0 décoché / 1 coché) et on utilise check1 qui lui sera posté quoi qu'il arrive.

  10. #10
    Membre expérimenté
    Inscrit en
    Janvier 2004
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 242
    Par défaut
    Pour information si tu ne coche pas le checkbox, le post est quand meme fait, il vide juste la valeur... puis post la data.
    Si la case est coché, il transmet le contenu de la valeur.

    D'ou le test
    si checkbox1 différent de '1' alors la case n'est pas coché, vu que si elle etait coché, la valeur serait 1.

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 100
    Par défaut
    LoL on va débattre longtemps je crois à ce sujet

    Alors, lorsque tu décoches la case le POST est effectué, mais pas l'INPUT de type checkbox, donc tu ne peux pas tester que la valeur de l'input soit égale à "off".
    Tu peux seulement le faire si elle est égale à "on".

    En revanche, comme le POST est effectué, rien ne nous empêche de mettre un INPUT de type hidden qui, lui, sera posté que l'on coche ou que l'on décoche la checkbox.

  12. #12
    Membre expérimenté
    Inscrit en
    Janvier 2004
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 242
    Par défaut
    Citation Envoyé par pitxu Voir le message
    LoL on va débattre longtemps je crois à ce sujet

    Alors, lorsque tu décoches la case le POST est effectué, mais pas l'INPUT de type checkbox, donc tu ne peux pas tester que la valeur de l'input soit égale à "off".
    Tu peux seulement le faire si elle est égale à "on".

    En revanche, comme le POST est effectué, rien ne nous empêche de mettre un INPUT de type hidden qui, lui, sera posté que l'on coche ou que l'on décoche la checkbox.

    bon je refais plus lentement, pourtant ce n'est pas difficile

    Tu as un checkbox value=1 name=ck1

    Donc si on coche le checkbox, ck1 aura comme valeur le caractere "1".

    Si tu ne coche pas ck1, ck1 aura comme valeur "" (chaine vide) donc différent de "1".

    pas besoin de faire de hidden encore heureux.

  13. #13
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    C'est pas possible... Je vais expliquer clairement ce que pitxu veut dire

    Prenons un exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <form name="form1" method="post" action="">
    homme : <input type="checkbox" name="checkbox1" value="un homme" /> <br/>
    femme : <input type="checkbox" name="checkbox2" value="une femme" /> <br/>
    enfant : <input type="checkbox" name="checkbox3" value="un enfant" /> <br/>
    <input type="submit" name="monsubmit" />
    </form>
    Quand tu postes ton formulaire, tu ne recuperes QUE les checkboxes cochées, du coup tu ne pourras pas faire un affichage du style "vous etes un homme et vous n'êtes pas une femme ni un enfant" parce que dans $_POST la seule chose que tu recois c'est les valeurs des checkboxes COCHEES.

    DONC, si ton formulaire est dynamique et que tu ne connais pas a l'avance les valeurs des checbkoxes tu ne peux plus savoir les choix qui n'ont pas été cochés !

    Compris?

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 100
    Par défaut
    Ben oui mais moi, je veux les récupérer lol.

    un if(!isset($checkbox1)) $checkbox1=0; ne me suffit pas

    et puis, si on fait comme tu dis, à la première visite de la page, vu que rien n'est posté, toutes les checkbox apparaitraient décochés.
    Alors qu'elles doivent être coché en fonction du résultat sql.

    Je sais pas si tu me suis ...

  15. #15
    Membre expérimenté
    Inscrit en
    Janvier 2004
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 242
    Par défaut
    Citation Envoyé par pitxu Voir le message
    Ben oui mais moi, je veux les récupérer lol.

    un if(!isset($checkbox1)) $checkbox1=0; ne me suffit pas

    et puis, si on fait comme tu dis, à la première visite de la page, vu que rien n'est posté, toutes les checkbox apparaitraient décochés.
    Alors qu'elles doivent être coché en fonction du résultat sql.

    Je sais pas si tu me suis ...
    C'est pas une radio box plutot que tu veux ?

    Bon j'y comprend rien au sujet de l'énnoncé , je retourne coder ce que je comprends (un forum)

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 100
    Par défaut
    Merci grand maître Koopajah

    ... enfin quelqu'un qui me comprend

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/04/2007, 06h05
  2. Récupérer les valeurs d'une collection de checkbox
    Par licorne dans le forum Langage
    Réponses: 4
    Dernier message: 27/10/2006, 12h53
  3. Récupérer les valeurs du checkbox
    Par kcizth dans le forum Langage
    Réponses: 2
    Dernier message: 27/10/2006, 09h16
  4. [PHP-JS] Récupérer les valeurs des checkbox
    Par jamirokoi dans le forum Langage
    Réponses: 3
    Dernier message: 07/04/2006, 16h24
  5. récupérer les valeurs de checkbox
    Par liichiii dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 11/08/2005, 16h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo