Jump to content

Recommended Posts

I am fairly new to .php and am having some trouble trying to calculate a date.

 

I have an .html form that uses .php to send the data from the form in an email.  On the form I have a jquery calendar where the user can select the date a service is needed. The user also enteres the time the service is needed as 24 hour time. I am able to pass the data and everything works fine.  Originally we didn't need the date/time to be anymore than integers.

 

So this is how the date and time are passed in the .html:

<script>
           $(function() {
           $( "#datepicker" ).datepicker();
             });
   </script>
  
    <input name="datepicker" type="text" id="datepicker" size="10" maxlength="10" />
    <input name="req_time" type="text" size="4" maxlength="4" />

the variable $datepicker passes the date to the .php and gets entered into the email as "Date Needed" formatted as mm/dd/yyyy.

the variable $req_time" passes the date to the .php and gets entered into the email as "Time Needed" formated as 0000 (integer).

 

However, now I need to check the date and time entered and compare them to the system date.  If the entered date and time are less than 72 hours from the system date, I need to force a popup message. 

 

I have the popup message working.  I just have no clue how to:

 

1) convert the entered date/time ($datepicker/$req_time) values to a date/time that can be calculated.

2) grab the saystem date/time in a value that can be calculated.

3) determine if the entered date is 72 hours or less from the syatem date.

 

Can this be done in .php and if so, can someone assist me?

 

SpaceChick

Make the datepicker return a yyyy-mm-dd string, then compare

if ($date . $time <= date("Y-m-dHi", strtotime("+72 hours")) {
	// too soon
}
Don't think that it's doing some kind of date comparison - it's not. It's just a regular string comparison. Normally that's bad for numbers but you can do it here because each piece of the date and time is (1) in the same place in both strings, (2) padded to the same number of digits on both sides without any kind of AM/PM confusion in the time, and (3) arranged in most-significant to least-significant (largest to smallest intervals) order.

 

If that's confusing you can stick to actual numbers. Unix timestamps, specifically: the number of seconds since 1970 began.

if (strtotime($date . " " . $time) <= strtotime("+72 hours")) {
Side note: timezones will matter here. If your server's timezone is not the timezone you want to use in the comparison then you should change it before doing any work with date and time strings.

Thank you requinix.  I know it's not the .php, but I assume I place this in the .html code near where I have the datepicker script so if true, I can force the popup, else false, I just continue through the form?  Timezones won't matter, this form will be submitted by local users.

like Req said you can't place PHP inside a .html file. like as mentioned you can do it entirely in JavaScript. or you might be able to get away with using Ajax which is a combination of PHP & JavaScript.

<script>$(function() {$( "#datepicker" ).datepicker(({ dateFormat: "yy-mm-dd" }));

});

</script>
 
<form action="action.php">
</form>

then in action.php you can process  your form and compare.

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.