I understand I should put this: if(is_array($data)) { array_shift($data); }
Instead of: array_shift($data); > Or just do .... > > if(is_array($data)) { > array_shift($data); > > } > > HTH Alex > > ----- Original Message ----- > From: "Walter Lee Davis" <wa...@wdstudio.com> > To: <prototype-scriptaculous@googlegroups.com> > Sent: Wednesday, July 01, 2009 5:56 PM > Subject: [Proto-Scripty] Re: MySQL - order ID > > > Which means it's not getting an array. So look and see what it IS > > getting. What is the value of $data at that point? (Use echo(), > > print_r(), something like that to output the value.) > > > I can see the error right away, looking back over the code. It's a > > fairly stupid error on my part introduced while refactoring the > > working code into an example you could pick apart and learn from. > > > I want you to find it, because otherwise you will never stand on your > > own here. > > > Walter > > > On Jul 1, 2009, at 10:31 AM, WLQ wrote: > > >> But here's what I get in error: > >> array_shift() [function.array-shift]: The argument should be an array > > >> On this line: > >> array_shift($data); > > >>> Yes. Like any example that you will ever find on the Web, this one > >>> needs to be adjusted to match your environment. Some basic fluency in > >>> PHP is a requirement to use the MAR system, it can't divine > >>> everything > >>> for you. > > >>> Walter > > >>> On Jul 1, 2009, at 5:57 AM, WLQ wrote: > > >>>> Right, shouldn't then that be 'widgets'? Because the table of our > >>>> original sortable list were controlled by the widgets table. So > >>>> like: > >>>> if($master = MyActiveRecord::FindById('widgets',$original)){ > > >>>>> Originals is a table in the database, it contains one of each > >>>>> type of > >>>>> thing you wish to be able to clone into the clones table. > >>>>> MyActiveRecord creates a PHP class for each table you "wrap" it > >>>>> around, and each row of the table becomes an object of that class > >>>>> when > >>>>> you request it through MAR. > > >>>>> In short, this line: > > >>>>> if($master = MyActiveRecord::FindById('originals',$original)){ > > >>>>> ...if it finds a table called 'originals' in your database, will > >>>>> return the row with the ID matching $original (or false). > > >>>>> Walter > > >>>>> On Jun 29, 2009, at 12:25 PM, WLQ wrote: > > >>>>>> It says - Class originals does not exist > >>>>>> Where does the originals class comes from? What is the originals > >>>>>> from > >>>>>> the code above? > > >>>>>>> If this is the code you are using (and I've added the missing > >>>>>>> close > >>>>>>> parenthesis), then the fact that you are getting a 200 back > >>>>>>> (and a > >>>>>>> new > >>>>>>> ID) means that you have successfully created a new clone. > >>>>>>> Otherwise, > >>>>>>> you should be getting a 500 or 404 back. > > >>>>>>> //create_clone.php > >>>>>>> $original = $_POST['original']; > >>>>>>> if($master = MyActiveRecord::FindById('originals',$original)){ > >>>>>>> $data = get_object_vars($original); > >>>>>>> array_shift($data); //get rid of the ID > >>>>>>> $new = MyActiveRecord::Create('clones',$data); > >>>>>>> $new->save(); > >>>>>>> if(false === $new->get_errors()){ > >>>>>>> header('Content-type: text/html; charset=utf-8'); > >>>>>>> //this is the part you need: > >>>>>>> print 'item_' . $new->id; > >>>>>>> }else{ > >>>>>>> header('HTTP/1.0 500 Server Error',true,500); > >>>>>>> exit; > >>>>>>> }}else{ > > >>>>>>> header('HTTP/1.0 404 Missing',true,404); > > >>>>>>> } > > >>>>>>> Visit your test page with Firefox and with the Console tab of > >>>>>>> Firebug > >>>>>>> open. Make sure Firebug is set to show XHR transactions. You > >>>>>>> should > >>>>>>> be > >>>>>>> able to observe the request to create_clone, and see the reply > >>>>>>> from > >>>>>>> the server. The reply should be the new ID of your clone. If it > >>>>>>> isn't, > >>>>>>> then you have more debugging to do. > > >>>>>>> Things to check here: > > >>>>>>> * Have you included/required the library (MyActiveRecord) in this > >>>>>>> script, and have you defined the constants it needs (MySQL > >>>>>>> address > >>>>>>> and > >>>>>>> credentials, also known as a DSN). > >>>>>>> * Have you got a MySQL table called clones? > >>>>>>> * Have you enabled error reporting on your server for your test > >>>>>>> pages, > >>>>>>> so you can see the PHP errors as they whiz by? > >>>>>>> * Have you ordered that fat book I recommended? > > >>>>>>> Debugging PHP is like playing Whack-a-Mole. You fix one thing, > >>>>>>> and > >>>>>>> another pops up. You iterate, in other, more dainty words. > > >>>>>>> Walter > > >>>>>>> On Jun 28, 2009, at 12:04 PM, WLQ wrote: > > >>>>>>>> Also I've used that clone.php you gave, the only thing it > >>>>>>>> doesn't do > >>>>>>>> is change the MySQL table itself. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Prototype & script.aculo.us" group. To post to this group, send email to prototype-scriptaculous@googlegroups.com To unsubscribe from this group, send email to prototype-scriptaculous+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/prototype-scriptaculous?hl=en -~----------~----~----~----~------~----~------~--~---