无法实现过滤功能(strtotime)

时间:2018-07-06 12:48:39

标签: php datetime time filter filtering

我需要以哪种方式来挖掘过滤问题。

我有关于体育赛事的记录,每个体育赛事都有用于事件开始时间和事件结束时间的列:

事件#1
开始时间:09:00(time_from)
结束时间:12:00(time_to)

数据库中时间的格式为HH:MM。

然后我有一个过滤器页面,用户可以在其中设置事件时间的时间范围,以显示所有发生在09:45-11:45的事件)

我正在尝试通过将过滤器输入和数据库值转换为秒来过滤用户指定范围内的事件,但无法完全正常工作:

$i = 0;
foreach($sport_events as $event)
{
    // check if the event is in user specified range
    // $filter_time is already converted to strtotime previously

    if( strtotime($event['time_from']) >= $filter_time_from_seconds && strtotime($event['time_to']) <= $filter_time_to_seconds )
    {
        // do nothing
    } else {
        // unset sport event
        unset($event[$i]);
    }
    $i++;
}

如果用户输入09:00和12:00,而不是10:00和11:00,则可能会输出结果。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

如果您将TIME格式的“ from_date”和“ to_date”存储到数据库中,则可以将用户的输入过滤器数据直接传递给MySQL查询,例如

SELECT * FROM TABLE-NAME WHERE `from_date` >= '10:00' AND `to_date` <= '12:00';

您不需要循环即可检查PHP条件下的结果集。