Stephen, thank you SO MUCH.
If anybody need to do something similar, this is the code:
if ($this->request->is('post')) {
$date = $this->request->data['BookedSurvey']['survey_date'];
$formattedDate = CakeTime::format(
"{$date['year']}-{$date['month']}-{$date['day']}", "%B %e, %Y"); //'Jul 23,
2014'
print_r($formattedDate);
$isBooked = $this->Point->BookedSurvey->find('count', array(
'conditions' => CakeTime::dayAsSql($formattedDate, 'survey_date') //
replace the date as you see fit, using Jul 23, 2014 as an example
));
echo "status";
print_r($isBooked);
print_r(date('m'));
print_r($this->request->data['BookedSurvey']['survey_date']);
if($isBooked > 0) {
echo "Already booked";
}
}
Again, many thanks!!!
On Wednesday, 23 July 2014 12:20:54 UTC+1, Stephen S wrote:
>
> Check out
> http://book.cakephp.org/2.0/en/core-libraries/helpers/time.html#TimeHelper::format
>
> You can pass your date and specify which date format you want (see
> http://www.php.net/date), so something like
>
> $date = $this->request->data['BookedSurvey']['survey_date'];
> $formattedDate =
> CakeTime::format("{$date['year']}-{$date['month']}-{$date['day']}", "%M %D,
> %Y);
>
> I imagine there's a much better way to do this but I'm strapped for time
> right now to think any harder, sorry! :)
>
>
> On 23 July 2014 12:11, Jumy Elerossë <[email protected] <javascript:>>
> wrote:
>
>> Thank you very much Stephen. I only have a noob question... How can I
>> tell to my Form to send the date in that format?
>>
>> This is the code of the button that I have in my view:
>>
>> echo $this->Form->input('BookedSurvey.survey_date', array(
>> 'type'=>'date',
>> 'label' => '',
>> 'dateFormat' => 'DMY',
>> 'minYear' => date('Y'),
>> 'minMonth' => date('M'),
>> 'minDay' => date('D'),
>> 'div' => 'col col-md-9',
>> 'style' => 'margin: 15px 5px 5px 0px'
>> ));
>>
>> And when I do a
>> print_r($this->request->data['BookedSurvey']['survey_date']);
>>
>> it send the date as
>> Array ( [day] => 22 [month] => 01 [year] => 2014 )
>>
>>
>> It's the only thing that I can't make to work...
>>
>>
>> On Wednesday, 23 July 2014 11:35:42 UTC+1, Stephen S wrote:
>>
>>> Add the following above your controller class:
>>>
>>> App::uses('CakeTime', 'Utility');
>>>
>>>
>>> This will give you access to the CakeTime utility within your controller
>>> ($this->Time references the helper which is for use in views) Something
>>> like this should work I think, syntax may be a little off maybe, I haven't
>>> had time to test.
>>>
>>> $isBooked = $this->Point->BookedSurvey->find('count', array(
>>>> 'conditions' => CakeTime::dayAsSql('Jul 23, 2014', 'survey_date')
>>>> // replace the date as you see fit, using Jul 23, 2014 as an example
>>>> ));
>>>
>>>
>>>
>>> On 23 July 2014 11:21, Jumy Elerossë <[email protected]> wrote:
>>>
>>>> Thank very much for your help.
>>>>
>>>> Yes, survey_date is using datetime, so the code should be something
>>>> like this?
>>>>
>>>> if ($this->request->is('post')) {
>>>>
>>>>
>>>> $isBooked = $this->Point->BookedSurvey->find('count',
>>>> array(
>>>> 'conditions' => array(
>>>> $this->Time->dayAsSql('BookedSurvey.survey_date')
>>>> => date('Y-m-d') // Maybe pass an actual specific date rather than just
>>>> today
>>>> )
>>>> ));
>>>>
>>>> echo "status";
>>>>
>>>> if($isBooked > 0) {
>>>> echo "Already booked";
>>>> }
>>>>
>>>>
>>>> }
>>>>
>>>>
>>>> Because it returns this error:
>>>>
>>>>> Fatal Error
>>>>>
>>>>> Error: Call to a member function dayAsSql() on a non-object
>>>>>
>>>>
>>>> On Wednesday, 23 July 2014 08:41:00 UTC+1, Stephen S wrote:
>>>>
>>>>> You could try something like the following
>>>>>
>>>>> $isBooked = $this->Point->BookedSurvey->find('count', array(
>>>>> 'conditions' => array(
>>>>> 'BookedSurvey.survey_date' => date('Y-m-d') // Maybe pass an
>>>>> actual specific date rather than just today
>>>>> )
>>>>> ));
>>>>>
>>>>> if($isBooked > 0) {
>>>>> echo "Already booked";
>>>>> }
>>>>>
>>>>> If your survey_date field is using datetime, you can check between
>>>>> 00:00:00 and 23:59:59 using the TimeHelper::dayAsSql method here
>>>>> http://book.cakephp.org/2.0/en/core-libraries/helpers/t
>>>>> ime.html#TimeHelper::dayAsSql
>>>>>
>>>>> I'd recommend using the time helper where applicable really, you'd
>>>>> need to use CakeTime:: if you plan to do this in a controller or model.
>>>>>
>>>>> Hope this helps
>>>>>
>>>>>
>>>>> On 23 July 2014 01:44, Jumy Elerossë <[email protected]> wrote:
>>>>>
>>>>>> Hello everyone.
>>>>>>
>>>>>> I'm struggling with a problem since a week ago, and this is driving
>>>>>> me crazy.
>>>>>>
>>>>>> I'm doing a website for doing surveys in the forest. This is the
>>>>>> schema:
>>>>>>
>>>>>> 1 place have several points, and for each point, an user can book a
>>>>>> day for doing a survey. If that point has booked already a survey for
>>>>>> that
>>>>>> date, an error will be shown.
>>>>>>
>>>>>> I have the following tables: places, points, users and booked_surveys.
>>>>>>
>>>>>> The table booked_surveys has the following fields: id, survey_date,
>>>>>> point_id and user_id
>>>>>>
>>>>>> Models: Place, Point, User, BookedSurvey
>>>>>>
>>>>>> Controllers: PlacesController, PointController, UserController,
>>>>>> BookedSurveysController
>>>>>>
>>>>>> Views: add, edit, index and view for each one.
>>>>>>
>>>>>> When the user is viewing a point, there's a date selector in the view
>>>>>> for booking:
>>>>>>
>>>>>> <h2>Book a date:</h2>
>>>>>>
>>>>>> <?php echo $this->Form->create('BoostCake', array(
>>>>>> 'inputDefaults' => array(
>>>>>> 'div' => 'form-group',
>>>>>> 'label' => array(
>>>>>> 'class' => 'col col-md-1 control-label'
>>>>>> ),
>>>>>> 'wrapInput' => 'col col-md-9',
>>>>>> 'class' => 'form-control'
>>>>>> ),
>>>>>> 'class' => 'form-horizontal'
>>>>>> )); ?>
>>>>>>
>>>>>> <?php echo $this->Form->create('Point');
>>>>>>
>>>>>>
>>>>>> echo $this->Form->input('BookedSurvey.survey_date',
>>>>>> array(
>>>>>> 'type'=>'date',
>>>>>> 'label' => '',
>>>>>> 'dateFormat' => 'YMD',
>>>>>> 'minYear' => date('Y'),
>>>>>> 'minMonth' => date('M'),
>>>>>> 'minDay' => date('D'),
>>>>>> 'div' => 'col col-md-9',
>>>>>> 'style' => 'margin: 15px 5px 5px 0px'
>>>>>> ));
>>>>>>
>>>>>> echo $this->Form->hidden('User.id', array(
>>>>>> 'value' => $user_id)
>>>>>> );
>>>>>>
>>>>>> ?>
>>>>>>
>>>>>>
>>>>>>
>>>>>> <div class="form-group">
>>>>>> <?php echo $this->Form->submit('Book survey',
>>>>>> array(
>>>>>> 'div' => 'col col-md-9',
>>>>>> 'class' => 'btn btn-success btn-lg',
>>>>>> 'style' => 'margin: 10px 5px 5px 10px'
>>>>>> )); ?>
>>>>>> </div>
>>>>>>
>>>>>> And then, the PointsControllers looks if there is someone that
>>>>>> already booked for that day. And this is what is driving me crazy,
>>>>>> because
>>>>>> I'm not able to doing it to work. What I tried is this:
>>>>>>
>>>>>> if ($this->request->is('post')) {
>>>>>>
>>>>>>
>>>>>>
>>>>>> // Begin of comprobation
>>>>>>
>>>>>> $booked_condition = $this->Point->BookedSurvey->fi
>>>>>> nd('first',
>>>>>> array('conditions'=>array(
>>>>>>
>>>>>> 'DATE(BookedSurvey.survey_date)'=>'date()')));
>>>>>>
>>>>>>
>>>>>>
>>>>>> if ($booked_condition){
>>>>>>
>>>>>> echo "Already booked";
>>>>>> }
>>>>>>
>>>>>>
>>>>>> If anyone can PLEASE give some light to this... Please....
>>>>>>
>>>>>> --
>>>>>> Like Us on FaceBook https://www.facebook.com/CakePHP
>>>>>> Find us on Twitter http://twitter.com/CakePHP
>>>>>>
>>>>>> ---
>>>>>> You received this message because you are subscribed to the Google
>>>>>> Groups "CakePHP" group.
>>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>>> send an email to [email protected].
>>>>>> To post to this group, send email to [email protected].
>>>>>>
>>>>>> Visit this group at http://groups.google.com/group/cake-php.
>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Kind Regards
>>>>> Stephen Speakman
>>>>>
>>>> --
>>>> Like Us on FaceBook https://www.facebook.com/CakePHP
>>>> Find us on Twitter http://twitter.com/CakePHP
>>>>
>>>> ---
>>>> You received this message because you are subscribed to the Google
>>>> Groups "CakePHP" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>> an email to [email protected].
>>>> To post to this group, send email to [email protected].
>>>> Visit this group at http://groups.google.com/group/cake-php.
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>>
>>>
>>>
>>> --
>>> Kind Regards
>>> Stephen Speakman
>>>
>> --
>> Like Us on FaceBook https://www.facebook.com/CakePHP
>> Find us on Twitter http://twitter.com/CakePHP
>>
>> ---
>> You received this message because you are subscribed to the Google Groups
>> "CakePHP" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected] <javascript:>.
>> To post to this group, send email to [email protected]
>> <javascript:>.
>> Visit this group at http://groups.google.com/group/cake-php.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>
>
> --
> Kind Regards
> Stephen Speakman
>
--
Like Us on FaceBook https://www.facebook.com/CakePHP
Find us on Twitter http://twitter.com/CakePHP
---
You received this message because you are subscribed to the Google Groups
"CakePHP" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/cake-php.
For more options, visit https://groups.google.com/d/optout.