FUDforum
Fast Uncompromising Discussions. FUDforum will get your users talking.

Home » Imported messages » comp.lang.php » Verifying time in php
Show: Today's Messages :: Polls :: Message Navigator
Return to the default flat view Create a new topic Submit Reply
Re: Verifying time in php [message #179381 is a reply to message #179375] Sun, 14 October 2012 15:44 Go to previous messageGo to previous message
Richard Damon is currently offline  Richard Damon
Messages: 58
Registered: August 2011
Karma:
Member
On 10/14/12 5:45 AM, houghi wrote:
> I have a form that has the following entry fields:
> hours
> minutes
> seconds
>
> I need the time in seconds and that works:
> $realtime=$_POST['hours']*3600+$_POST['minutes']*60+$_POST['seconds'];
>
> However people can fill out nothing or they could enter characters
>
> What is the easiest way to verify if what the people filled out is
> correct? I have tried, but I get lost in the if statements.
>
> Extra difficult is that they must not fill out all three. Only one is
> enough. e.g.
> 1 hour and no minutes or second gives 3600
> 1 hour, 1 minute and 1 second gives 3661
> 1 hour and 'X' should give an error.
> All empty should give an error
> empty hour 70 minutes and 75 seconds gives 4275.
> Hours of more then 24 will be possible as well.
> I might even add number of days.
>
> If the last one gives an error, but it makes the life much easier, I can
> live with that
>
> It is the fact that they do not need to fill out all three that I am
> stuck.
>
> What I have tried is first to see if all are empty
> Next try to see if each one is not a number
> Then I need to figure out if there is a combination of some of it.
>
> And that is when I get lost in the if statements and loops in loops.
>
> I am sure there is an easy way to tell if all is nice and works well,
> but how? Seaching google gave me transfering from seconds to H:i:s, but
> that is not what I want.
>
> houghi
>

First you need a definition of "Valid", it sounds like for your case,
the definition would be that each field contains only the characters 0-9
or is blank (which in some sense is a special case of only containing
the characters 0-9), with a second restriction of all can not be blank.
From your later discussion, it sounds like a result of all fields 0 or
blank is also invalid, for which the simplest test is probably do you
calculation and then see if the result is 0.

You might also want the fields to contain a possible single decimal
point so the person could enter something like 3.5 hours as a time. The
biggest question with this option is do you need to support
internationalization, where sometimes a decimal point is a '.' and
sometimes it is a ','.

The simplest structure for this sounds to be code that first checks each
field that is contains the proper characters, the compute the results
and see if the value is 0.

To fully test a field, if we are willing to ignore internationalization
(that is left as an exercise to the reader) is to match the fields to
the regular expression (warning, untested): ^\d*(\.\d*)?

You may also want to modify the test string to allow whitespace before
and after the string of digits.
[Message index]
 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: Curl chmod file transfer problem...
Next Topic: test
Goto Forum:
  

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ]

Current Time: Sat Nov 23 16:59:35 GMT 2024

Total time taken to generate the page: 0.05170 seconds