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 :

Checkbox cochée ou pas?


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 265
    Points : 108
    Points
    108
    Par défaut Checkbox cochée ou pas?
    Bonjour,
    Je n'arrive pas à trouver une solution qui me permette de savoir si un utilisateur a coché une checkbox:

    J'ai ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="checkbox" name="Proposition1">
    Et si proposition1 est coché je voudrais que la variable $proposition1 recoive 1, inversement 0 si elle n'est pas cochée ...
    Quelle est la syntaxe qui permet de faire ça s'il vous plait ?
    Merci

  2. #2
    Membre habitué
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2010
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2010
    Messages : 111
    Points : 152
    Points
    152
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $proposition1=0;
    if ( $_POST("Proposition1") )
    {
    $proposition1=1;
    }
    ?

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Plus proprement, il faut utiliser isset() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $proposition1 = isset($_POST["Proposition1"]) ? 1 : 0;
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 265
    Points : 108
    Points
    108
    Par défaut
    Ah ben j'imaginais pas si simple, désolé je suis débutant en PHP
    En tout cas merci à vous deux!

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 265
    Points : 108
    Points
    108
    Par défaut
    Je me permets de réouvrir ce sujet car j'ai un autre problème assez proche...
    J'ai 5 checkbox et quand l'utilisateur clique sur un bouton "valider", si les 5 sont décochées, je souhaite avoir un message javascript d'erreur:
    Voici ce que j'ai fait:

    Les 5 checkbox sont de ce type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="checkbox" name="Proposition1" value="0" onclick="this.value=(this.value==0)?1:0">
    Leurs noms sont Proposition1, Proposition2 ect ...

    et j'ai ceci en JS:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <script type="text/javascript">
    			 function verif_formulaire()
    			{
     
    			if ((Proposition1==0)&&	(Proposition2==0)&& (Proposition3==0)&& (Proposition4==0)&& (Proposition5==0)){alert("chiant");return false;}									
    			}
     
    </script>
    Mais ça ne marche pas...
    sachant que j'ai bien entendu ça plus haut:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form name="nouvelajoutquestion" action="nouvelajoutquestion_SQL.php" method ="POST" onSubmit="return verif_formulaire()">

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 265
    Points : 108
    Points
    108
    Par défaut
    J'ai changé une ligne de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    			if ((document.nouvelajoutquestion.Proposition1.value==0)&&	(document.nouvelajoutquestion.Proposition2.value==0)&& (document.nouvelajoutquestion.Proposition3.value==0)&& (document.nouvelajoutquestion.Proposition4.value==0)&& (document.nouvelajoutquestion.Proposition5.value==0)){alert("chiant");return false;}
    Mais tjrs rien

  7. #7
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    Bonjour,

    Tu devrais créer un topic dans la rubrique javascript, car aucun rapport avec PHP ici...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    <html>
    <head>
      <title>test</title>
      <script type="text/javascript">
     
    function verif(frm) {
     
       var elts= frm["cases[]"];
       var test= false;
     
       for(var i=0; i<elts.length; i++) 
          if(elts[i].checked) test= true;
     
       if(!test) alert("il faut cocher au moins une checkbox !");
       return test;   
    }
     
      </script>
    </head>
    <body>
     
    <form method="post" action="" onsubmit="return verif(this)">
    <input type="checkbox" name="cases[]" value="1"/>
    <input type="checkbox" name="cases[]" value="2"/>
    <input type="checkbox" name="cases[]" value="3"/>
    <input type="submit" name="sub" value="test !" />
    </form>
    </body>
    </html>

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 265
    Points : 108
    Points
    108
    Par défaut
    Merci pour ta réponse, j'ai testé, en effet ça passe mais j'aurais bien aimé cette version qui me semblait plus simple:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(document.nouvelajoutquestion.Proposition1.checked == false){alert("rferregfegegerger");}
    avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="checkbox" name="Proposition1">
    Pourquoi ce truc simple ne marche pas, j'aimerais bien comprendre l'erreur....

  9. #9
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    mouais...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    <html>
    <head>
      <title>test</title>
      <script type="text/javascript">
     
    function verifFrm() {
      if(
        !document.testFrm.cases1.checked &&
        !document.testFrm.cases2.checked &&
        !document.testFrm.cases3.checked) 
    {
        alert("aucune case cochée !");
        return false;
    }
      return true;   
    }
     
      </script>
    </head>
    <body>
     
    <form method="post" name="testFrm" action="" onsubmit="return verifFrm()">
    <input type="checkbox" name="cases1" value="1"/>
    <input type="checkbox" name="cases2" value="2"/>
    <input type="checkbox" name="cases3" value="3"/>
    <input type="submit" name="sub" value="test !" />
    </form>
    </body>
    </html>
    ça fonctionne chez moi...


  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 265
    Points : 108
    Points
    108
    Par défaut
    Ouais je sais pas c'est bizarre...
    Je comprends pas pourquoi tu mets value=1 value=2 ect dans les input des checkbox, ça sert à quoi ?
    Merci encore à toi...

  11. #11
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    Effectivement, dans ce cas précis, cela ne sert pas à grand chose, car chaque checkbox a un attribut "name" différent.

    donc la page qui se sert du résultat va chercher les valeurs ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $checkbox1= $_POST['cases1'];
    $checkbox2= $_POST['cases2']; // si le checkbox n'a pas été coché, $_POST['cases2'] n'existe pas (il faudrait donc tester son existence avant)...
     
    ...etc...
    mais si tu prends mon exemple précédent, tous les checkbox ont le même attribut "name" (a savoir "cases[]" )
    l'attribut "value" prend ainsi tout son sens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $cases = $_POST['cases'];
    $checkbox1= false;
    $checkbox2= false;
     
    if (in_array(1, $cases)) $checkbox1 = true; // 1 représente l'attribut "value" du checkbox
    if (in_array(2, $cases)) $checkbox2 = true;
    ...etc...
    bien sûr, ce code doit être optimisé, mais c'est juste pour t'expliquer la différence...


  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 265
    Points : 108
    Points
    108
    Par défaut
    Merci bcp pour ces explications master !!

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

Discussions similaires

  1. Checkbox coché ou pas
    Par flo57570 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 21/10/2010, 09h49
  2. [MySQL] Liste déroulante selon checkbox coché ou pas.
    Par Nicolas_k dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 24/02/2010, 12h32
  3. [HTMLDocument]checkbox coché ou pas ?
    Par Invité dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 10/02/2006, 10h31
  4. checkbox coché ou pas ?
    Par kcizth dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 06/02/2006, 10h16

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