Okay Alexander,
I think I get it better now,
How about this:
function extend($id)
{
//Note: The musicianRequest model is automatically loaded for us at
$this->MusicianRequest.
// Check to see if we have get data...
if (empty($id))
{
$this->redirect('MusicianRequest/index'); // or whereever you
want a bad request to jump to.
}
$this->MusicianRequest->id = $id;
$message = 'Unable to process your "extend" request';
$this->data = $this->MusicianRequest->read();
$lifetime = $this->data['MusicianRequest']['lifetime'];
$lifetime = trim(date( "Y-m-d H:i:s", strtotime( "+4 weeks",
strtotime($lifetime))));
if ($this->MusicianRequest->saveField('lifetime', $lifetime))
{
$message = "Extended this musician request.";
}
//Flash a message and redirect.
$this->flash($message, "/musicianRequest/view/{$id}", 2);
}
This may not be exactly what your looking for, but you can probably
extend it. I think the problem might have been not setting $this-
>MusicianRequest->id = $id;
HTH
Jeff
On Sep 25, 5:38 am, cronet <[EMAIL PROTECTED]> wrote:
> Thanks for your reply.
>
> The action is simple. In my index action, there is a list of all
> Musician Requests. After every Request, there is a link, which
> executes my extend action with the given ID.
> The Extend Action shoul only take 'lifetime' and adding 4 weeks to
> it. Th rest of the data is untouched. That's why I want to use
> saveField.
> I want to reduce the overhead, reading all data, and storing all data
> which is even unchanged.
>
> My first version of this snippet was like yours. But it had not
> worked anyway...
>
> Am 25.09.2007 um 00:35 schrieb [EMAIL PROTECTED]:
>
>
>
> > Alexander, ... I don't see all your code, so I'm guessing.
>
> > I assume this is all happening in the save action in your contoller.
>
> > And I'm guessing at a few names, but I think you'll get it...
>
> > Why not do this (from the docs, but adapted to your question... I
> > think):
>
> > function edit($id)
> > {
> > //Note: The musicianRequest model is automatically loaded for us at
> > $this->MusicianRequest.
>
> > // Check to see if we have form data...
> > if (empty($this->data))
> > {
> > $this->MusicianRequest->id = $id;
> > $this->data = $this->MusicianRequest->read();//populate the
> > form fields with the current row
> > }
> > else
> > {
> > /*
> > ** here's my deviation from the example for your field.
> > */
> > $this->data['MusicianRequest']['lifetime'] =
> > trim(date( "Y-m-d H:i:s",
> > strtotime( "+4 weeks",
> > strtotime($this-
> >> data['MusicianRequest']['lifetime']))));
> > /*
> > ** and from here on we continue as normal
> > */
> > // Here's where we try to save our data. Automagic validation
> > checking
> > if ($this->MusicianRequest->save($this-
> >> data['MusicianRequest']))
> > {
> > //Flash a message and redirect.
> > $this->flash('Your information has been saved.',
> > '/properties/view/'.$this-
> >> data['MusicianRequest']['id'], 2);
> > }
> > //if some fields are invalid or save fails the form will render
> > }
> > }
>
> > Jeff
>
> > On Sep 23, 4:33 pm, cronet <[EMAIL PROTECTED]> wrote:
> >> Hi,
>
> >> i'm trying to save a single datefield. My Controller looks like this:
>
> >> -------------------------%<--------------------------------
> >> // Set ID and lifetime
> >> $this->MusicianRequest->id = $id;
>
> >> $lifetime = trim(date( "Y-m-d H:i:s", strtotime( "+4 weeks",
> >> strtotime($this->data['MusicianRequest']['lifetime']) ) ) );
>
> >> echo $lifetime; // FirstCase
> >> $this->MusicianRequest->saveField('lifetime',$lifetime); //
> >> SecondCase
> >> -------------------------%<--------------------------------
>
> >> What happens?
> >> It shows me the right lifetime output in the FirstCase (e.g.
> >> 2007-10-21 23:02:00), but the query looks like this:
> >> UPDATE `musician_requests` SET `lifetime` = '2007-09-23 23:02:00'
> >> WHERE `id` IN (6)
>
> >> Perhaps i create $lifetime the wrong way? But if I use a manual
> >> created SQL query
> >> -------------------------%<--------------------------------
> >> $this->MusicianRequest->query( "UPDATE `musician_requests` SET
> >> `lifetime` = '".$lifetime."' WHERE `id` IN (".$id.")" );
> >> -------------------------%<--------------------------------
> >> it works....
>
> >> I think it's an cake related problem, cause the php echo output
> >> displays the correct datetime.
> >> The query cakephp creates, is definitly not the desired lifetime...
>
> >> Any ideas or hints?
>
> >> Regards,
> >> Alexander
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Cake
PHP" 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
-~----------~----~----~----~------~----~------~--~---