Re: Simple SQL Query that i just cant get right
As every one said, do this: $pilid = $this-Pil-find( 'first', // tell cake that you want one record, first one array( 'conditions' = array('Pil.user_id' = $user_id), 'fields' = array('Pil.pilid'), 'order' = array('Pil.pilid' = 'DESC') // provide order preferred way ) ); On Sep 23, 4:50 am, Steppio stepisgr...@hotmail.com wrote: Hi everybody, this ones been doing my head in for some time now, hope you can help me out, im sure its very simple but i just cant get it working. Firstly the table structure is like this: CREATE TABLE pil ( id int(11) unsigned NOT NULL auto_increment primary key, user_id int(11) unsigned not null, pilid int(11) unsigned NOT NULL, pcode varchar(255), quantity text not null, created DATETIME, modified DATETIME )ENGINE=InnoDB DEFAULT CHARSET=latin1; And this is inside my pils_controller.php: function newpil() { $user_id = $this-Session-read('User.id'); $pilid = $this-Pil-find( array( 'conditions' = array('Pil.user_id' = $user_id), 'fields' = array('Pil.pilid'), 'order' = array('Pil.pilid DESC'), )); $pilid2 = ($pilid['Pil']['pilid'] + 1); ... } What i want is for the above function to pick out the last pil (product inquiry list) that the user set-up and to add a 1 to that. Any ideas where im going wrong? Any help will be greatly appreciated. Thank you Ste --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups CakePHP group. To post to this group, send email to cake-php@googlegroups.com To unsubscribe from this group, send email to cake-php+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php?hl=en -~--~~~~--~~--~--~---
Re: Simple SQL Query that i just cant get right
Thank you all for your reponses - it works now! Just for future reference i used Brian's last response to solve it, but they all work. Thank you all for your time, it is greatly appreciated! Ste On 23 Sep, 08:49, Dr. Loboto drlob...@gmail.com wrote: As every one said, do this: $pilid = $this-Pil-find( 'first', // tell cake that you want one record, first one array( 'conditions' = array('Pil.user_id' = $user_id), 'fields' = array('Pil.pilid'), 'order' = array('Pil.pilid' = 'DESC') // provide order preferred way ) ); On Sep 23, 4:50 am, Steppio stepisgr...@hotmail.com wrote: Hi everybody, this ones been doing my head in for some time now, hope you can help me out, im sure its very simple but i just cant get it working. Firstly the table structure is like this: CREATE TABLE pil ( id int(11) unsigned NOT NULL auto_increment primary key, user_id int(11) unsigned not null, pilid int(11) unsigned NOT NULL, pcode varchar(255), quantity text not null, created DATETIME, modified DATETIME )ENGINE=InnoDB DEFAULT CHARSET=latin1; And this is inside my pils_controller.php: function newpil() { $user_id = $this-Session-read('User.id'); $pilid = $this-Pil-find( array( 'conditions' = array('Pil.user_id' = $user_id), 'fields' = array('Pil.pilid'), 'order' = array('Pil.pilid DESC'), )); $pilid2 = ($pilid['Pil']['pilid'] + 1); ... } What i want is for the above function to pick out the last pil (product inquiry list) that the user set-up and to add a 1 to that. Any ideas where im going wrong? Any help will be greatly appreciated. Thank you Ste --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups CakePHP group. To post to this group, send email to cake-php@googlegroups.com To unsubscribe from this group, send email to cake-php+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php?hl=en -~--~~~~--~~--~--~---
Simple SQL Query that i just cant get right
Hi everybody, this ones been doing my head in for some time now, hope you can help me out, im sure its very simple but i just cant get it working. Firstly the table structure is like this: CREATE TABLE pil ( id int(11) unsigned NOT NULL auto_increment primary key, user_id int(11) unsigned not null, pilid int(11) unsigned NOT NULL, pcode varchar(255), quantity text not null, created DATETIME, modified DATETIME )ENGINE=InnoDB DEFAULT CHARSET=latin1; And this is inside my pils_controller.php: function newpil() { $user_id = $this-Session-read('User.id'); $pilid = $this-Pil-find( array( 'conditions' = array('Pil.user_id' = $user_id), 'fields' = array('Pil.pilid'), 'order' = array('Pil.pilid DESC'), )); $pilid2 = ($pilid['Pil']['pilid'] + 1); ... } What i want is for the above function to pick out the last pil (product inquiry list) that the user set-up and to add a 1 to that. Any ideas where im going wrong? Any help will be greatly appreciated. Thank you Ste --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups CakePHP group. To post to this group, send email to cake-php@googlegroups.com To unsubscribe from this group, send email to cake-php+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php?hl=en -~--~~~~--~~--~--~---
Re: Simple SQL Query that i just cant get right
The first param for find() should be one of 'first', 'all', 'list', etc. But, if all you want is a single value, use field(): function newpil() { $pilid = $this-Pil-field( 'pilid', array( 'Pil.user_id' = $this-Session-read('User.id') ) ) + 1; ... } That being said, I wonder if you're heading into other problems here. Do you know that your table will have duplicates for pilid? Because they will only ever be unique for a particular user_id. In fact, I don't know why you're not just using the primary key for this. It's an auto_increment field and is designed for just this purpose--increment the value for new records while also ensuring that it's unique across all records. On Tue, Sep 22, 2009 at 5:50 PM, Steppio stepisgr...@hotmail.com wrote: Hi everybody, this ones been doing my head in for some time now, hope you can help me out, im sure its very simple but i just cant get it working. Firstly the table structure is like this: CREATE TABLE pil ( id int(11) unsigned NOT NULL auto_increment primary key, user_id int(11) unsigned not null, pilid int(11) unsigned NOT NULL, pcode varchar(255), quantity text not null, created DATETIME, modified DATETIME )ENGINE=InnoDB DEFAULT CHARSET=latin1; And this is inside my pils_controller.php: function newpil() { $user_id = $this-Session-read('User.id'); $pilid = $this-Pil-find( array( 'conditions' = array('Pil.user_id' = $user_id), 'fields' = array('Pil.pilid'), 'order' = array('Pil.pilid DESC'), )); $pilid2 = ($pilid['Pil']['pilid'] + 1); ... } What i want is for the above function to pick out the last pil (product inquiry list) that the user set-up and to add a 1 to that. Any ideas where im going wrong? Any help will be greatly appreciated. Thank you Ste --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups CakePHP group. To post to this group, send email to cake-php@googlegroups.com To unsubscribe from this group, send email to cake-php+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php?hl=en -~--~~~~--~~--~--~---
Re: Simple SQL Query that i just cant get right
Thanks for the response. Basically its a bit like a shopping cart. I need a primary key just to keep each entry into the Product Inquiry List seperate, for example some of the lines i have in the database at the moment are: ID | User ID |Pilid|pcode| quantity | ... 13 58 1 CM221 14 58 1 CD013 15 58 1 CM003 6 16 58 1 CM1/3 1 17 58 1 CM451 3 When i want to add a new pil i click on the function newpil(), which at the moment does this 18 58 2 -- -- This is what i want, but when i use the function newpil() again i want the latest pilid for that user to increment again, i.e. 19 58 3 -- -- What you have sent me worked if the Pilid was 1, it added a 1 to the 'pilid' in the find query, but once it gets to 2 it seems to stop, just keeps being pilid = 2. I know this is a wierd way to do it but it seemed to work in my head :/ Again thanks for the response. On 22 Sep, 23:06, brian bally.z...@gmail.com wrote: The first param for find() should be one of 'first', 'all', 'list', etc. But, if all you want is a single value, use field(): function newpil() { $pilid = $this-Pil-field( 'pilid', array( 'Pil.user_id' = $this-Session-read('User.id') ) ) + 1; ... } That being said, I wonder if you're heading into other problems here. Do you know that your table will have duplicates for pilid? Because they will only ever be unique for a particular user_id. In fact, I don't know why you're not just using the primary key for this. It's an auto_increment field and is designed for just this purpose--increment the value for new records while also ensuring that it's unique across all records. On Tue, Sep 22, 2009 at 5:50 PM, Steppio stepisgr...@hotmail.com wrote: Hi everybody, this ones been doing my head in for some time now, hope you can help me out, im sure its very simple but i just cant get it working. Firstly the table structure is like this: CREATE TABLE pil ( id int(11) unsigned NOT NULL auto_increment primary key, user_id int(11) unsigned not null, pilid int(11) unsigned NOT NULL, pcode varchar(255), quantity text not null, created DATETIME, modified DATETIME )ENGINE=InnoDB DEFAULT CHARSET=latin1; And this is inside my pils_controller.php: function newpil() { $user_id = $this-Session-read('User.id'); $pilid = $this-Pil-find( array( 'conditions' = array('Pil.user_id' = $user_id), 'fields' = array('Pil.pilid'), 'order' = array('Pil.pilid DESC'), )); $pilid2 = ($pilid['Pil']['pilid'] + 1); ... } What i want is for the above function to pick out the last pil (product inquiry list) that the user set-up and to add a 1 to that. Any ideas where im going wrong? Any help will be greatly appreciated. Thank you Ste --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups CakePHP group. To post to this group, send email to cake-php@googlegroups.com To unsubscribe from this group, send email to cake-php+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php?hl=en -~--~~~~--~~--~--~---
Re: Simple SQL Query that i just cant get right
On 09/22/2009 07:30 PM, Steppio wrote: Thanks for the response. Basically its a bit like a shopping cart. I need a primary key just to keep each entry into the Product Inquiry List seperate, for example some of the lines i have in the database at the moment are: ID | User ID |Pilid|pcode| quantity | ... 13 58 1 CM221 14 58 1 CD013 15 58 1 CM003 6 16 58 1 CM1/3 1 17 58 1 CM451 3 When i want to add a new pil i click on the function newpil(), which at the moment does this 18 58 2 -- -- This is what i want, but when i use the function newpil() again i want the latest pilid for that user to increment again, i.e. 19 58 3 -- -- What you have sent me worked if the Pilid was 1, it added a 1 to the 'pilid' in the find query, but once it gets to 2 it seems to stop, just keeps being pilid = 2. I know this is a wierd way to do it but it seemed to work in my head :/ Again thanks for the response. On 22 Sep, 23:06, brianbally.z...@gmail.com wrote: The first param for find() should be one of 'first', 'all', 'list', etc. But, if all you want is a single value, use field(): function newpil() { $pilid = $this-Pil-field( 'pilid', array( 'Pil.user_id' = $this-Session-read('User.id') ) ) + 1; ... } That being said, I wonder if you're heading into other problems here. Do you know that your table will have duplicates for pilid? Because they will only ever be unique for a particular user_id. In fact, I don't know why you're not just using the primary key for this. It's an auto_increment field and is designed for just this purpose--increment the value for new records while also ensuring that it's unique across all records. On Tue, Sep 22, 2009 at 5:50 PM, Steppiostepisgr...@hotmail.com wrote: Hi everybody, this ones been doing my head in for some time now, hope you can help me out, im sure its very simple but i just cant get it working. Firstly the table structure is like this: CREATE TABLE pil ( id int(11) unsigned NOT NULL auto_increment primary key, user_id int(11) unsigned not null, pilid int(11) unsigned NOT NULL, pcode varchar(255), quantity text not null, created DATETIME, modified DATETIME )ENGINE=InnoDB DEFAULT CHARSET=latin1; And this is inside my pils_controller.php: function newpil() { $user_id = $this-Session-read('User.id'); $pilid = $this-Pil-find( array( 'conditions' = array('Pil.user_id' = $user_id), 'fields' = array('Pil.pilid'), 'order' = array('Pil.pilid DESC'), )); $pilid2 = ($pilid['Pil']['pilid'] + 1); ... } What i want is for the above function to pick out the last pil (product inquiry list) that the user set-up and to add a 1 to that. Any ideas where im going wrong? Any help will be greatly appreciated. Thank you Ste As Brian said, just add 'first' to your code and that should do the job: $this-Pil-find('first', array( --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups CakePHP group. To post to this group, send email to cake-php@googlegroups.com To unsubscribe from this group, send email to cake-php+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php?hl=en -~--~~~~--~~--~--~---