S.A. Khalili
S.A. Khalili

Reputation: 43

Check against multiple - if not - conditions in PHP

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

Answers (3)

Nawin
Nawin

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

narayansharma91
narayansharma91

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

Nigel Ren
Nigel Ren

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

Related Questions