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 :

Form input checkbox on/off


Sujet :

Langage PHP

  1. #1
    Membre actif
    Inscrit en
    Février 2009
    Messages
    616
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 616
    Points : 249
    Points
    249
    Par défaut Form input checkbox on/off
    Bonjour,

    Depuis hier, pas moyen de trouver la solution à ce problème qui pourtant semble simple.

    Dans un simple <form method="post"> j'ai un <input type="checkbox">. Lors du clique sur le bouton submit je recharge cette même page mais pas moyen de conserver le changement le checked ou non sur le checkbox ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     $value_change = (isset($_POST["test"])&&($_POST["test"])==0)?1:0;
     
    <form method="post">
     <input name="test" type="checkbox" <?php echo ($_POST['test']==1)?'checked="checked':""; ?> value="<?php echo (isset($value_change))?$value_change:1; ?>">test on/off
    <input type="submit" value="test">
    </form>
    Malgré plusieurs recherches et plusieurs essais,
    Auriez-vous une solution SVP ?

  2. #2
    Membre éprouvé Avatar de Willy_k
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 540
    Points : 1 067
    Points
    1 067
    Par défaut
    Salut,
    Faudrait fixer la valeur de l'input,de toute façon rien ne sera envoyé tant que l'élément n'est pas coché.
    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?php
    $value_change = isset($_POST["test"]) ? $_POST['test'] : 0;
    ?>
    <form method="post">
     <input name="test" type="checkbox" <?php echo ($value_change == 1) ? 'checked="checked' : ""; ?> value="1" /> test on/off
    <input type="submit" value="test">
    </form>
    Je ne sais pas si c'est l'idée.
    Le bienfait n'est jamais perdu

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Willy_k Voir le message
    ... rien ne sera pas envoyé ...
    Houlà, faut réfléchir un peu, là....



    Sinon.....
    Inutile de changer la value de la chexkbox.
    Si elle n'est pas cochée, elle n'est pas envoyée...

    ...comme l'a bien pas mal pas non expliqué Willy_k

  4. #4
    Membre éprouvé Avatar de Willy_k
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 540
    Points : 1 067
    Points
    1 067
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Houlà, faut réfléchir un peu
    ça m'arrive souvent de ne pas le faire.. Dire ça pour une erreur de frappe franchement
    Le bienfait n'est jamais perdu

  5. #5
    Membre actif
    Inscrit en
    Février 2009
    Messages
    616
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 616
    Points : 249
    Points
    249
    Par défaut
    Merci c'est exactement ça à part que je souhaite que la valeur par défaut du checkbox soit checked, ce qui semble impossible ...

  6. #6
    Membre éprouvé Avatar de Willy_k
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 540
    Points : 1 067
    Points
    1 067
    Par défaut
    Comme ça alors

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?php
    $value_change = isset($_POST["test"]) ? $_POST['test'] : 1;
    ?>
    <form method="post">
     <input name="test" type="checkbox" <?php echo ($value_change == 1) ? 'checked="checked' : ""; ?> value="0" /> test on/off
    <input type="submit" value="test">
    </form>
    Le bienfait n'est jamais perdu

  7. #7
    Membre actif
    Inscrit en
    Février 2009
    Messages
    616
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 616
    Points : 249
    Points
    249
    Par défaut
    Non j'ai retourné ça dans tous les sens, et aussi ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    $value_change = isset($_POST["test"]) ? $_POST['test'] : 0;
    $ckecked_defaut = (!isset($_POST["test"])) ? 'checked="checked' : "";
     
    ?>
    <form method="post">
     <input name="test" type="checkbox" <?php echo $ckecked_defaut; echo ($value_change == 1) ? 'checked="checked' : ''; ?> value="1" /> test on/off
    <input type="submit" value="test">
    </form>
    sans aucun résutat

  8. #8
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    ou avec PHP 7+ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <form method="post">
       <input name="test" type="checkbox" <?= ($_POST['test'] ?? 1) ? 'checked' : '' ?> value="0" /> test on/off
       <input type="submit" value="test">
    </form>

  9. #9
    Membre éprouvé Avatar de Willy_k
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 540
    Points : 1 067
    Points
    1 067
    Par défaut
    @Dominos qu'est-ce qui ne fonctionne pas ? Par défaut l'élément est coché ou qu'est-ce que vous souhaitez avoir comme résultat ?
    Le bienfait n'est jamais perdu

  10. #10
    Membre actif
    Inscrit en
    Février 2009
    Messages
    616
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 616
    Points : 249
    Points
    249
    Par défaut
    Citation Envoyé par rawsrc Voir le message
    Salut,

    ou avec PHP 7+ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <form method="post">
       <input name="test" type="checkbox" <?= ($_POST['test'] ?? 1) ? 'checked' : '' ?> value="0" /> test on/off
       <input type="submit" value="test">
    </form>
    Merci mais ce source tourne sur php 5.4.12.

    Donc pas d'autre solution ?

  11. #11
    Membre actif
    Inscrit en
    Février 2009
    Messages
    616
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 616
    Points : 249
    Points
    249
    Par défaut
    Citation Envoyé par Willy_k Voir le message
    @Dominos qu'est-ce qui ne fonctionne pas ? Par défaut l'élément est coché ou qu'est-ce que vous souhaitez avoir comme résultat ?
    Le soucis c'est que une fois décoché après validation submit il reste coché au lieu d'être décoché, etc.

  12. #12
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    $checked = (isset($_POST['submit_btn']) && ( ! isset($_POST['test']))) ? '' : 'checked';
    ?>
    <form method="post">
       <input name="test" type="checkbox" <?= $checked ?> value="0" /> test on/off
       <input type="submit" value="test" name="submit_btn">
    </form>

  13. #13
    Membre actif
    Inscrit en
    Février 2009
    Messages
    616
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 616
    Points : 249
    Points
    249
    Par défaut
    Merci, dans mes recherches, j'avais vu ça sur un exemple utilisant un type="hidden" mais je ne comprenais pas le principe,
    c'est vraiment très étrange comme solution.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    $checked = (isset($_POST['submit_btn']) && ( ! isset($_POST['test']))) ? '' : 'checked';
    ?>
    <form method="post">
       <input name="test" type="checkbox" <?php echo $checked ?> value="0" /> test on/off
       <input type="submit" value="test" name="submit_btn">
    </form>
    Encore merci pour vos réponses.

  14. #14
    Membre actif
    Inscrit en
    Février 2009
    Messages
    616
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 616
    Points : 249
    Points
    249
    Par défaut
    Après plusieurs essais encore..., je suis toujours bloqué avec cela, en fait le code inclut aussi une variable de session, et ne fonctionne donc toujours pas,
    ce qui cloche c'est que j'ai besoin de récupérer l'état du checkbox contenu dans le session et pas le $_POST

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    if (isset($_POST["test"])) $_SESSION['test']=$_POST["test"];
    $checked = (isset($_POST['submit_btn']) && ( ! isset($_POST['test']))) ? '' : 'checked';
    ?>
    <form method="post">
       <input name="test" type="checkbox" <?php if (($_SESSION['test']==1)) echo $checked; ?> value="0" /> test on/off
       <input type="submit" value="test" name="submit_btn">
    </form>
    d'avance pour vos idées

  15. #15
    Invité
    Invité(e)
    Par défaut
    1/ En début de script :
    2/ Ensuite, comme on t'a dit, $_POST["test"] N'EXISTERA QUE SI la checkbox est COCHEE.

    Pour être sûr que le formulaire a été soumis, on ne peut donc pas compter sur la checkbox, mais sur le bouton submit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    if ( !isset($_SESSION['test'])){ $_SESSION['test'] = 1; } // cochée au départ, par défaut
     
    if ( isset($_POST['submit_btn']) ) // formulaire soumis
    { 
      $_SESSION['test'] = ( isset($_POST['test']) )? 1 : 0;
    }
    ?>
    <form method="post">
       <input name="test" type="checkbox"<?php echo ($_SESSION['test']==1)? ' checked="checked"' : ''; ?> value="tout-sauf-zero" /> test on/off
       <input type="submit" value="OK" name="submit_btn">
    </form>
    3/ et si tu te demandes à quoi correspond cette formulation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      $_SESSION['test'] = ( isset($_POST['test']) )? 1 : 0;
    Dernière modification par Invité ; 30/09/2017 à 16h42.

  16. #16
    Membre actif
    Inscrit en
    Février 2009
    Messages
    616
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 616
    Points : 249
    Points
    249
    Par défaut
    Parfait ! C'est exactement ce que je cherchais à faire.
    Néanmoins le value n'était pas nécessaire, bien que fonctionnant avec le zéro.

    Code testé et parfaitement compatible avec Chrome/Safari/IE/FF/Opéra.

    Sincère remerciement.

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

Discussions similaires

  1. [Struts-Layout] title sous forme de checkbox
    Par imane_bennouna dans le forum Struts 1
    Réponses: 2
    Dernier message: 09/11/2006, 09h29
  2. Input Checkbox sans <Form> Possible ?
    Par Arvulis dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 08/08/2006, 11h02
  3. Form + input text avec espace
    Par psykbe dans le forum Langage
    Réponses: 3
    Dernier message: 23/02/2006, 14h22
  4. form et checkbox
    Par marion782 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 19/02/2006, 23h54
  5. [struts][debutant]input checkbox vs html checkbox
    Par venegan dans le forum Struts 1
    Réponses: 2
    Dernier message: 19/08/2005, 16h23

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