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

Zend_Form PHP Discussion :

Contrôle checkbox


Sujet :

Zend_Form PHP

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 489
    Points : 171
    Points
    171
    Par défaut Contrôle checkbox
    Bonjour,
    Je dispose d'un formulaire (voir.phtml) dans lequel j'ai inséré une checkbox qui permet de valider des CGU :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type='checkbox' name='cgu'><a href='<?php echo $this->baseUrl ?>/pay/cgu' target='_blank'>J'ai lu et accepté les conditions générales de ventes</a>
    Le bouton qui apparaît ensuite pour valider le formulaire est construit dans le controller via Zend_Form.

    J'aimerais savoir s'il est possible de vérifier dans le controller que le checkbox est bien coché, si oui, comment le faire ?

    D'avance merci.
    Vincent

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    deux possibilités :
    - tu as créé ta checkbox en utilisant Zend_Form_Element_Checkbox. Dans ce cas, il existe une fonction isChecked() qui regarde si la case est cochée ou non.

    - tu as écrit ta checkbox à la main en html. Dans ce cas, on revient au bon vieux principe qui dit qu'une checkbox non cochée n'est pas envoyée par le formulaire. Donc si tu as une valeur dans $_POST['cgu'], c'est qu'elle est cochée
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 489
    Points : 171
    Points
    171
    Par défaut
    merci.
    j'ai utilisé le

  4. #4
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 489
    Points : 171
    Points
    171
    Par défaut
    je me permets de revenir sur le sujet, car l'interception de $_POST['cgu'] fonctionne, mais je n'arrive pas à interpréter son contenu pour rediriger dans un sens ou l'autre

    J'ai tenté les codes suivants :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    - if (!empty($_POST['cgu'])) --> coché ou non, même résultat
    - if (!isset($_POST['cgu'])) --> coché ou non, même résultat

    J'ai tenté également de tester si la valeur est "" .. rien non plus.

    Auriez-vous la solution car je ne comprends plus.
    Merci.

  5. #5
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    normalement isset devrait fonctionner.
    Essaye de faire un print_r de $_POST pour voir ce qu'il y a dedans...
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  6. #6
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 489
    Points : 171
    Points
    171
    Par défaut
    ma variable est vide, je ne comprends pas pourquoi...

  7. #7
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Bon sang mais c'est bien sûr : il n'y a pas de value dans ta checkbox. Donc forcément rien n'est envoyé....
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type='checkbox' name='cgu' value="1" />
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  8. #8
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 489
    Points : 171
    Points
    171
    Par défaut
    ok, je rajoute l'attribut , mais la valeur va changer si je check la case ?
    merci.

  9. #9
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Ben logiquement, lorsque la case sera cochée tu recevras, et non cochée tu ne recevras rien (à tester avec isset donc)
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  10. #10
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 489
    Points : 171
    Points
    171
    Par défaut
    je ne comprends pas, c'est normalement très simple, et ça ne fonctionne toujours pas.
    J'écris dans un fichier le contenu des variables et , et c'est toujours blanc, malgré que je coche la case dans le formulaire.
    Je ne sais plus trop où chercher ...

  11. #11
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 489
    Points : 171
    Points
    171
    Par défaut
    Celira ? plus d'idées?

    Si cela peux aider, voici mon code :

    dans mon controller, pour la construction du form :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    		$form->setMethod('post')
    			 ->setAttrib("target","_self")
    		   ->setAction(ROOT_URL . '/pay')
    		   //->addElement($cgu)
    		   ->addElement('submit', 'Accéder à la plateforme , array('label' => 'Accéder à la plateforme'))
    		   ->addElement($idElement)
    		   ->addElement($keyElement);
    Pour le checkbox, il est déjà présent dans le post, donc je ne le remet pas.

    Ensuite, dans le même controller pour récupérer la valeur du checkbox :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if($_POST['cgu'])== "1"){
             $this->_redirect('/error/cgu');
          }
    Je me suis trompé quelque part ?
    merci

  12. #12
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Vérifie tes parenthèses :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if($_POST['cgu']== "1"){
    Mais là tu va rediriger si la case est cochée...
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  13. #13
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 489
    Points : 171
    Points
    171
    Par défaut
    effectivement, il y avait une erreur de parenthèsses.
    j'ai mis ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if($_POST['cgu'] != "1"){
             $this->_redirect('/error/cgu');
          }
    et malgré ça, je suis systématiquement revoyer sur /error/cgu ...

  14. #14
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 489
    Points : 171
    Points
    171
    Par défaut
    N'ayant pas de solution, je tente d'une façon différente :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ->addElement(
                'CheckBox',
                'cgu',
                array(
                  'label' => 'I accept CGU',
                  'style' =>'margin-left:100px;',
                  'required' => true,
                  'checkedValue' => '1'
                  )
            )
    Malheureusement, ça ne me donne rien non plus... moi qui croyait qu'il était simple d'utiliser une case à cocher ...
    je préfère les développements web sans framework ...

    Je dispose un controlle avec plusieurs méthodes

    dont une "voirAction" :

    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
     $form = new Zend_Form();
    		$idElement = $form->createElement('hidden', 'id')->setValue($id);
    		$keyElement = $form->createElement('hidden', 'key')->setValue($key);
     
     
         $form->setMethod('post')
    			 ->setAttrib("target","_self")
    		   ->setAction(ROOT_URL . '/pay')
    		   ->addElement(
                'CheckBox',
                'cgu',
                array(
                  'label' => 'I accept CGU',
                  'style' =>'margin-left:100px;',
                  'required' => true,
                  'checkedValue' => '1'
                  )
            )
    		   ->addElement('submit', 'Accéder à la plateforme ', array('label' => 'Accéder à la plateforme'))
    		   ->addElement($idElement)
    		   ->addElement($keyElement);
     
    		$this->view->form = $form;
    		$this->view->dp = $dp;
    Puis la méthode "indexAction" appelé par le submit du formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(!isset($_POST['cgu']) && $_POST['cgu'] != "1"){
            $this->_redirect('/error/cgu');
          }
    quand je vérifie le contenu de $_POST['cgu'], je n'ai rien, que la case soit cochée ou non.

    Auriez-vous une idée avec ces éléments?

  15. #15
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 489
    Points : 171
    Points
    171
    Par défaut
    sinon, autre solution : est-ce possible de faire apparaître le bouton de validation seulement après avoir coché la case ? en gros, dès que l'utilisateur coche la case, faire apparaître le bouton.
    Si possible, pourriez-vous m'expliquer comment faire ?

Discussions similaires

  1. Réponses: 13
    Dernier message: 30/05/2012, 10h42
  2. [Checkbox dans ListBox] Récupérer la valeur des contrôles Checkbox
    Par Manson dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 25/05/2009, 10h10
  3. Lag avec contrôles checkbox!
    Par metalheadz dans le forum Windows Forms
    Réponses: 6
    Dernier message: 28/01/2008, 20h30
  4. Contrôles (CheckBox) sur une feuille de calcul
    Par yogyx dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 04/12/2006, 09h54
  5. problème contrôle checkbox cliqué ou non
    Par mussara dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 03/04/2006, 16h16

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