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 :

Désactiver une checkbox


Sujet :

Langage PHP

  1. #1
    Membre éprouvé

    Inscrit en
    Janvier 2006
    Messages
    969
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 969
    Par défaut Désactiver une checkbox
    Bonjour

    J'ai un petit problème de checkbox : j'ai un formulaire avec contrôle des données. Si les données ne sont pas correctes, je les réécrit dans le formulaire et j'invite l'utilisateur à les modifier.
    Pour cela, je déclare toutes mes variables de formulaire avec ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    function define_var($var, $default = NULL) 
     {
      $variable = isset($GLOBALS[$var]) ? $GLOBALS[$var] : ( isset($_GET[$var]) ? $_GET[$var] : ( isset($_POST[$var]) ? $_POST[$var] : ( isset($_SESSION['VarsDemandeTiers'][$var]) ? $_SESSION['VarsDemandeTiers'][$var] : $default) ) );
      $_SESSION['VarsDemandeTiers'][$var] = $variable;
      $return = '$'.$var .' = \''.$variable."';";
      return $return;
     }
     
    puis (pour la variable $role_emetteur qui nous intéresse) 
    eval(define_var('role_emetteur', 0));
     
    et enfin dans le formulaire (méthode POST):
    Emetteur : <input type=checkbox value="1" <?php echo $role_emetteur == 1 ? 'checked' : '' ; ?> name=role_emetteur />
    Lorsque les données entrées par l'utilisateur comportent une erreur et que je coche ma checkbox et que je valide, elle apparait bien cochée.
    Par contre, quand je la décoche et que je revalide le formulaire, elle reste cochée. Et pour cause : une checkbox non cochée n'envoie pas de données par POST, et comme la variable de stockage $_SESSION['VarsDemandeTiers']['role_emetteur'] vaut 1, ma checkbox reste à 1.

    J'ajoute que j'ai un header() vers la même page qui clôt le contrôleur du formulaire, ce qui fait que les données POST ne restent pas (sinon la question ne se serait pas posée).

    Quelqu'un saurait-il comment résoudre ce problème ? Y a-t-il un moyen de faire envoyer des données par une checkbox non cochée ?

    Merci d'avance

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Par défaut
    Pourquoi ne testes-tu pas l'existence de $_POST['ma_checkbox'] et si elle n'existe pas, tu ne coches pas ?

  3. #3
    Membre éprouvé

    Inscrit en
    Janvier 2006
    Messages
    969
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 969
    Par défaut
    Justement parce que j'ai un header() à la fin de mon contrôleur, ce qui fait qu'après le second passage, $_POST n'est jamais renseignée (d'où l'utilisation de $_SESSION).

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Par défaut
    Dans ce cas, tu peux vérifier avant la fin de ton contrôleur si la checkbox est coché en faisant un isset() sur ton $_POST. Ensuite, tu modifies ta variable de session en conséquence. Je ne vois pas très bien où est le problème ?

Discussions similaires

  1. [FAQ] Les formulaires (partie 2) : Comment désactiver une zone de texte en cochant une checkbox ?
    Par Auteur dans le forum Contributions JavaScript / AJAX
    Réponses: 6
    Dernier message: 17/11/2013, 11h59
  2. [C#] Comment désactiver un Bouton en cochant une Checkbox ?
    Par Paradisma dans le forum Windows Forms
    Réponses: 16
    Dernier message: 10/06/2010, 18h39
  3. Réponses: 2
    Dernier message: 27/08/2009, 11h27
  4. Désactiver un checkbox d'une checkedlistbox
    Par phfle1 dans le forum VB.NET
    Réponses: 1
    Dernier message: 16/06/2008, 16h48
  5. désactivation d'une zone de texte en cochant une checkBox
    Par mjihanne dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 25/05/2006, 16h33

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