Re: FormBuilder linkNewValue issue

From: Date: Fri, 20 May 2005 05:52:10 +0000
Subject: Re: FormBuilder linkNewValue issue
References: 1 2  Groups: php.pear.general 
Request: Send a blank email to pear-general+get-19295@lists.php.net to get a copy of this message
Il 02:23, venerdì 20 maggio 2005, Justin Patrin ha scritto: > On 5/19/05, Alessandro Pasotti <ale.pas@tiscali.it> wrote: > > Hello, > > > > I have a big problem here: > > > > * I have a FB form with one linkNewValue linked table (PK on linked table > > points to FK on main table) > > * When there is an error in the main form, the linked new value in > > sub-form is inserted correctly in the DB, but the form is displayed again > > as nothing would happened in the sub form. > > * When I correct the main form and submit it again, FB try to insert the > > sub-form > > values again and fails because DB constraints check for uniq in the > > linked table. > > > > I don't know if this is a bug or I did'nt understand how it works. > > So basically you're getting a DB error on inserting the main record. > How are you handling this? FB doesn't do any transactional stuff, so > it can't really rollback. You could easily start a transaction before > you process the FB and then roll it back if processForm returns an > error. In fact, this is what I suggest you do. FB assumes that if the > form validates it will process correctly. The DB processing is not > fault tolerant at all. If something fails it's up to the calling app > to deal with it. Thanks for the quick answer, I implemented commit/rollback stuff and now it works great. I have another problem yet (the DB design is unfortunately not my choice): * Imagine you are adding a new record in the same scenario described above, * When you call validation method _before_ the subform is processed it fails because the required FK for the linked table is null. * To make it work, I had to modify fb->processForm to posticipate validation of the main form _after_ the subform is processed. Is there a more "elegant" solution for this problem? -- Alessandro Pasotti ICQ# 245871392 Linux User #167502

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