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

Bibliothèques et frameworks PHP Discussion :

[PEAR][HTML_QuickForm] Affichage d'une nouvelle page de formulaire en fonction de la précédente


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 7
    Points : 6
    Points
    6
    Par défaut [PEAR][HTML_QuickForm] Affichage d'une nouvelle page de formulaire en fonction de la précédente
    Je m'explique,

    Dans une page de mon formulaire, je dois choisir un forfait (Forfait1, Forfait2...).
    J'ai fait cela sous forme de liste déroulante.

    Dans la page suivante, je dois afficher les options spécifiques au forfait sélectionné ou passer à la page d'après si ce forfait n'a pas d'option... comment puis-je faire ?



    Voici une partie de mon 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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    <?php
     
    require_once("lib/header.php");
     
    require_once 'HTML/QuickForm/Controller.php';
    require_once 'HTML/QuickForm/Action/Next.php';
    //require_once 'HTML/QuickForm/Action/Nextf.php';
    require_once 'HTML/QuickForm/Action/Back.php';
    require_once 'HTML/QuickForm/Action/Direct.php';
    require_once 'HTML/QuickForm/Action/Display.php';
     
    // Start the session, form-page values will be kept there
    session_start();
     
    ProtectedPage::displayHeader($GLOBALS[lTest]);
     
    class PageFirst extends HTML_QuickForm_Page
    {
        function buildForm()
        {
            //un formulaire avec plein de champs
        }
    }
     
     
     
    //------page de choix du forfait-----------
     
    class PageSecond extends HTML_QuickForm_Page
    {
        function buildForm()
    	{
            $this->_formBuilt = true;
            $this->addElement('header',top, $GLOBALS[lPage2]);
     
    		$forfait = array();
    		for ($i=1; $i<$GLOBALS['MAX']; $i++){
    			$forfait[$i] = 'Forfait'.$i;
    		}
    		$sel =& $this->addElement('hierselect', 'forfait', 'forfait :'); //liste déroulante
    		$sel->setOptions(array($forfait));
     
    		$prevnext[] =& $this->createElement('submit',$this->getButtonName('back'),$GLOBALS[lBack]);
    		$this->addGroup($prevnext, null, '', '&nbsp;', false);
     
    		$this->addElement('submit',$this->getButtonName('next'),$GLOBALS[lNext]);
    		$this->setDefaultAction('next');
    	}
    }
     
    //page de choix des options sur le forfait choisi
    class PageThird extends HTML_QuickForm_Page
    {
        function buildForm()
        {
    		$this->_formBuilt = true;
                    // ---- ici je dois afficher mes options ou pas ---
        }
    }
     
     
    class PageFourth extends HTML_QuickForm_Page
    {
       //page à afficher s'il n'y a pas d'option pour le forfait choisi
     
        }
    }
     
    //-----------récap de la saisie :---------
    class ActionProcess extends HTML_QuickForm_Action
    {
        function perform(&$page, $actionName)
        {
     
            echo "<h1>Récapitulatif de la saisie</h1><br>\n<pre>\n";
            var_dump($page->controller->exportValues());
            echo "\n</pre>\n";
        }
    }
     
    $wizard =& new HTML_QuickForm_Controller('Wizard');
    $wizard->addPage(new PageFirst('page1'));
    $wizard->addPage(new PageSecond('page2'));
    $wizard->addPage(new PageThird('page3'));
    $wizard->addPage(new PageFourth('page4'));
     
    // We actually add these handlers here for the sake of example
    // They can be automatically loaded and added by the controller
     
    $wizard->addAction('display', new HTML_QuickForm_Action_Display());
    $wizard->addAction('next', new HTML_QuickForm_Action_Next());
    $wizard->addAction('back', new HTML_QuickForm_Action_Back());
    $wizard->addAction('direct', new HTML_QuickForm_Action_Direct());
     
     
    // This is the action we should always define ourselves
    $wizard->addAction('process', new ActionProcess());
    $wizard->run();
    Attention, je n'ai pas encore défini quel forfait a quelle option, ne sachant trop comment m'y prendre. Je ne peux pas utiliser de hierselect avec listes dépendantes les unes des autres car il y a toutes sortes d'options (des listes, des dates de validité,des champs de texte,...)


    Merci d'avance pour votre aide

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Bon, j'ai résolu une partie de mon problème.

    Premier soucis : je voulais récupérer la valeur du forfait selectionné... donc 1, 2, 3 ou 4.
    un var_dump montre que c'est un array.
    Donc si je me place sur la page3 et que je veux donc récuperer cette info, postée dans la page2, je tape les lignes suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    //test pour le choix du forfait
    		$test = $this->controller->exportValue('page2', 'subscription');
    		$test2 = $test[0];
    		if ($test[0] == '2') {
    			$this->addElement('text','Test', $test2);
    		}
    Mon deuxième soucis, qu'il me reste à élucider, c'est de sauter une page du formulaire selon le forfait choisi.
    Si quelqu'un a une idée... à votre bon coeur...

Discussions similaires

  1. affichage d'une nouvelle page JSP
    Par rose_des_sables dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 13/06/2007, 00h50
  2. [C#] problème d'affichage d'une nouvelle Form
    Par michel_frederic dans le forum C#
    Réponses: 15
    Dernier message: 17/11/2005, 16h40
  3. Ouvrir un lien dans une nouvelle page
    Par freud dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 13/11/2005, 14h20
  4. [CR10] Comment savoir si c'est une nouvelle page ?
    Par speed034 dans le forum SAP Crystal Reports
    Réponses: 8
    Dernier message: 23/09/2005, 18h18
  5. popup : ouverture d'une nouvelle page
    Par kikou33 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 03/08/2005, 17h07

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