Невозможно реализовать функцию фильтрации (strtotime) - PullRequest
0 голосов
/ 06 июля 2018

Нужен совет, каким образом мне нужно копать с проблемой фильтрации.

У меня есть записи со спортивными событиями, у каждого спортивного события есть столбцы для времени начала события и времени окончания события:

Событие № 1
Время начала: 09:00 (время от)
Время окончания: 12:00 (time_to)

Формат времени в базе данных: ЧЧ: ММ.

Затем у меня есть страница фильтра, где пользователь может установить диапазон времени для события, чтобы показать все события, происходящие в 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 голосов
/ 06 июля 2018

Если вы храните «from_date» и «to_date» в формате TIME в базе данных, вы можете напрямую передать данные входного фильтра пользователя в запрос MySQL, например

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

Вам не требуется цикл для проверки результирующего набора в условии PHP.

...