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 CM22 1
> 14 58 1 CD01 3
> 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<[email protected]> 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<[email protected]> 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 [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---