Re: QuickForm - Arrgg!

From: Date: Fri, 11 Apr 2003 03:07:55 +0000
Subject: Re: QuickForm - Arrgg!
References: 1 2  Groups: php.pear.general 
Request: Send a blank email to pear-general+get-4793@lists.php.net to get a copy of this message
I've tried working the code around about 10 different ways. Always get the same behavior. I think it must be something I'm missing.... "Demian Turner" <demian@muse23.com> wrote in message news:3E95DB84.4040205@muse23.com... > I just got something similar working over the last few days. perhaps you need to > simplify your code, I'm using something like this and it works as expected: > > // get current stage > $iCurrentStage = Session::get('SESS_CURRENT_STAGE') > > // build form name > $sFormName = 'RegForm_' . $iCurrentStage; > require_once PSG_MOD_DIR . '/UserMgr/' . $sFormName . '.php'; > > // instantiate Quickform in an object wrapper > $oForm = & new $sFormName('add'); > $output->form = $oForm->init(); > > // if submitted, validate > if($this->submitted == 'Save') > $validated = $output->form->validate(); > > // if validated, confirm > if($validated) { > // remove submit buttons, replace with confirm > $output->form->freeze(); > } > > // if confirmed, write to DB > if($this->submitted == 'Confirm') > // code to write to DB > > // increment reg stage > $this->iRegStage ++; > Session::set('SESSION_REG_STAGE', $this->iRegStage); > > hth, > > Demian > > > > Wade Hovind wrote: > > I'm attempting to write a series of forms to collect a whole bunch of > > information. Here's the 'plan' > > > > Set a session variable 'step' and intialize it to one. In a file do a > > switch on the value of the session variable and include the correct file > > form1.php, form2.php etc. > > > > dsp_autoQuote - simplified contents: > > > > print "<pre>"; > > print '$_SESSION[step]: ' . $_SESSION['step'] . "\n"; > > print "</pre>"; > > > > switch($_SESSION['step']) { > > case "1": > > include("dsp_autoQuote1.php"); > > break; > > case "2": > > include("dsp_autoQuote2.php"); > > break; > > case "3": > > include("dsp_autoQuote3.php"); > > break; > > case "4": > > include("dsp_autoQuote2.php"); > > break; > > default: > > print 'I received step <b>' . $_SESSION['step'] . > > '</b> that > > dsp_autoQuote.php does not have a handler for.'; > > break; > > } > > > > In each file declare a QuickForm and at the bottom have the conditional > > > > if($form->validate()) { > > //do some stuff to save the values submitted off to session variables > > since they won't be > > //processed until the final step. > > > > //update the session var and call the file with the switch in it again > > ... the switch will then include > > //the needed file. I've tried this with a direct include of the lower > > level file but that doesn't work > > //either. > > $_SESSION['step']++; > > include "dsp_autoQuote.php"; > > } else { > > $form->display(); > > } > > > > I'm TOTALLY confused by what's happening. > > > > First form comes up fine. $_SESSION['step'] is at 1 and the form displays > > without any validation errors. When I hit the submit on this form and the > > validation passes ($form->validate() is true) then things start to go > > haywire. > > > > $_SESSION['step'] displays as 1 but the the switch statement includes the > > proper file (the second) EXCEPT the validations have failed once. There is > > the error message on the fields that require validation. If I hit the back > > button then everything is as is should be on the submit. > > > > I realize I'm missing something here and probably having a "brain fart". > > > > <whine>HELP</whine> > > > > > > >

« previous php.pear.general (#4793) next »