Reputation: 43
I have two input fields whit start and end time for an event. I only want the time to be in xx:00 or xx:30 format. Front-end is taken care of but I want in validate input in backend. Below is how I retrieve only minutes from posted time.
function validate_time($start_time,$end_time)
{
$start_time_min = substr($start_time,-2,2);
$end_time_min = substr($end_time,-2,2);
if ($start_time_min != '00' || $end_time_min != '00')
{
return false;
}
if ($start_time_min != '30' || $end_time_min != '30')
{
return false;
}
return true;
}
Above if statement returns always false, so what I need is to return false only if the start or end time is not 00 or not 30.
Upvotes: 0
Views: 72
Reputation: 1692
You can use single If condition like this code:
function validate_time($start_time,$end_time)
{
$start_time_min = substr($start_time,-2,2);
$end_time_min = substr($end_time,-2,2);
if (($start_time_min != '00' && $start_time_min != '30') || ($end_time_min != '00' && $end_time_min != '30'))
{
return false;
}
return true;
}
Upvotes: 1
Reputation: 2353
Try this:
function validate_time($start_time,$end_time)
{
$startTime = explode(':', $start_time);
$endTime = explode(':', $end_time);
if ($startTime[1] !='00' || $endTime[1] !='30') {
return false;
}
return true;
}
Upvotes: -1
Reputation: 57121
Using or (||
) in your above conditions is the cause of your problem as you will find one or the other is != 0 or 30.
if ($start_time_min != '00' && $start_time_min != '30')
{
return false;
}
if ($end_time_min != '00' && $end_time_min != '30')
{
return false;
}
Upvotes: 3