On Mon, Sep 1, 2008 at 10:10 AM, Gav <ipv6guru@xxxxxxxxx> wrote: > > > On Mon, Sep 1, 2008 at 9:23 AM, Evert Lammerts <evert.lammerts@xxxxxxxxx>wrote: > >> I'm pretty sure I found the problem - I should've spotted it earlier. >> >> The function ProfileList::render gets a reference to the $db object by >> its parameter &$db. While you loop over your results, you pass the >> reference on to $this->des->load. I'm guessing that the definition of >> $this->des->load is something like function load($id, $db);, in which >> case it's not getting a reference to the $db object but an actual copy >> in PHP4. Since PHP 5 there is a new object model that makes sure that >> any variable that holds an object is actually just a handle to the >> object - so whenever you pass it to a function you use it as a >> reference instead of a copy. >> >> To make it clear: >> >> class test { >> var $a = 1; >> function aa() { >> $this->a++; >> } >> } >> >> $c = new test(); >> $d = $c; >> $c->aa(); >> $d->aa(); >> var_dump ($c); >> >> results in: >> object(test)#1 (1) { ["a"]=> int(3) } >> >> This means you should first change the function definitions to not use >> references for objects, so take away the & at every &$db parameter. >> >> Second you need to create a new $db object for your $this->des->load >> function before the while loop in ProfileList::render. I think the >> safest option is to do something like $db2 = new Db(...). You can also >> use the keyword clone to clone an object, but i'm not sure what this >> does with your internal DB handle.... you could try and see what >> happens. Just add $db2 = clone $db; right before the while loop. Call >> $this->des->load with $db2 instead of $db. >> > > aha, excellent explanation , and $db2 = clone$db; worked fine! > > I was reading my way round php.net and getting closer I think, your > explanation and probably saved my a few days , so thanks. > hmm, did I speak to soon, it does work well for the whole list, but as soon as you select a region or speciality then it all goes pear shaped, I'll keep looking. Gav... > > > > -- > Gav... > > -- Gav... [LinkedIn : http://www.linkedin.com/in/ipv6guru] www.16degrees.com.au | www.iwdp.co.uk | www.minitutorials.com (Sponsorship slots available on above three sites!)