Re: DataOjbects to QuickForms and Back

From: Date: Tue, 19 Oct 2004 21:09:02 +0000
Subject: Re: DataOjbects to QuickForms and Back
References: 1  Groups: php.pear.general 
Request: Send a blank email to pear-general+get-14977@lists.php.net to get a copy of this message
On Tue, 19 Oct 2004 15:51:20 -0500, Sparacio, Sal <salsparacio@newton-associates.com> wrote: > > > Thanks for the response Justin, > > It was the primary key problem. I hate that my DBA got fired, anyway.. That > worked just fine if there is data that's already there. What I want the form > to do when call is .. if there is not a row in the table with that ID I want > it just to create a blank (null) row. I did a count() and then did: if count > < 1 than insert(). That worked and inserted the nulls into the db just fine. > Now the problem, I went to test out the form again and when I did not enter > a field that was 'required' by a rule, php freaked out and said:: " PHP has > encountered a Stack overflow ". It only does that if, I forget something > that is required in the rules. Btw, the rules worked before all this, I > tired putting spaces after the DO put the nulls in but that did not work > either. > > Just to restate:: If the rule don't validate it will cause a Stack Overflow > error .. but if everything is ok, than It will update the form. > Is this using FormBuilder or your own QuickForm? What version fo QuickForm do you have installed? Where exactly are you doing that count() call? What does the DataObject class look like? > > -- Sal > > > > -----Original Message----- > From: Justin Patrin [mailto:papercrane@gmail.com] > Sent: Tuesday, October 19, 2004 12:41 PM > To: Sparacio, Sal > Cc: pear-general@lists.php.net > Subject: Re: [PEAR] DataOjbects to QuickForms and Back > > > On Tue, 19 Oct 2004 09:43:54 -0500, Sparacio, Sal > <salsparacio@newton-associates.com> wrote: > > I have setup DataObjects to query my database and all. I tell it what "id" > ( > > its the prim key ) to use and then use the find() then the fetch() > commands. > > > > Then I use the setDefaults() command in QuickForms with the toArray() > > command of Dataobjects to populate all the fields + set all the defaults > for > > radio buttons and such. > > > > ### CODE ### > > > > $hud1->nreo_num = $_REQUEST['id']; > > > > // Perform the query > > > > $hud1->find(); > > $hud1->fetch(); > > > > $form->setDefaults($hud1->toArray()); > > > > ### CODE ### > > > > Now, is that the correct way to do it.. or did I take a long way around > > something (It just seemed to easy for some reason, but it works). > > > > 2nd question is, after I validate() ( the QuickForms one ), I do.. > > > > ### CODE ### > > > > $hud1->setFrom($_POST); > > > > $hud1->whereAdd('nreo_num = 6000143896'); > > > > $hud1->update(); > > > > ### CODE ### > > > > It runs and my problem is that when it does UPDATE SQL statement, in the > > "WHERE" section it puts all the old data. IE: where field1 = > > 'old_data', > AND > > field2 = 'old_data' .. etc etc threw like 40 of the fields, instead of > just > > doing where NREO_num = 'blah'. So the MSSQL complains because I have a few > > text fields and you cant do a "compare" ( where ) search on those types of > > fields. Is there somewhere I can tell it just to use the "WHERE nreo_num = > ' > > blah ' .. and not the rest? > > > > -- Sal > > > > I assume the nreo_num field is set up as a primary key? If it's not, > that may be your problem. You can try this: > > $hud1->whereAdd(); > $hud1->whereAdd('nreo_num = 6000143896'); > > If that doesn't work, I'm not sure why DO is putting everything in > there. Probably because the primary key isn't set up or isn't set in > the DO. > > > Aside from all that, though, have you looked at > DB_DataObject_FormBuilder? It does all this for you with a minimum of > fuss and is very customizable. > -- paperCrane --Justin Patrin--

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