Re: [QF] - setConstants() messign up elements value?

From: Date: Thu, 29 Jan 2004 12:32:24 +0000
Subject: Re: [QF] - setConstants() messign up elements value?
References: 1  Groups: php.pear.general 
Request: Send a blank email to pear-general+get-10422@lists.php.net to get a copy of this message
<Sebastian.Baran@dialcom.com.pl> wrote : > Hi all, > > > I have the following (pseudo)code: > > [..] > > $sform->addElement('text', '_date', 'Date: ', ''); > $sform->setDefaults(array('_date'=>date('d.m.Y'))); > > [..] > > if ($sform->validate()) { > > [..] > > // convert dd.mm.YYYY to YYYYmmdd format to put it into DB > $sform->applyFilter('_date', 'prepare_date'); > > if ($add_mode) { > echo '1: '.$sform->getElementValue('_date'); > > [put data into DB] > $id = mysql_insert_id($db->connection); > > $sform->setConstants(array("id"=>$id)); > > echo '2: '.$sform->getElementValue('_date'); > } > elseif ($edit_mode) { > [update record in DB] > } > } > > [..] > > > Everything's working fine except with '_date' field. > > 1) open page with form to add new record > 2) submit with correct values > 3) above code outputs: > > 1: 29.01.2004 > 2: 20040129 > > Why does seConstants() for "id" field change "_date" field value????? > And more why, though getElementValue() > > "Returns the element's raw value such as submitted by the form (not > filtered), set by setDefaults() or setConstants(). " > (quoted from QF docs) I get filtered value of "_date" field, but only > after setConstants() even not touching "_date" field? > > > I'm confused. Any help appreciated. setConstants() will trigger the 'updateValue' event in each form elements, that is the reason why the value is modified because it has been filtered beforehand. Normally, you use setConstants() before your form is validated. In your case, I think there is a logic problem. I don't see why you would use setConstants() here. Bertrand Mansion Mamasam

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