Просто несколько советов:
Выберите 2 ближайших события до текущего момента и ближайших 2 после текущего момента.
(SELECT *
FROM ...
WHERE `time` < NOW()
ORDER BY `time` DESC
LIMIT 2)
UNION
(SELECT *
FROM ...
WHERE `time` > NOW()
ORDER BY `time` ASC
LIMIT 2)
На данный момент у вас будет максимум 4 события в PHP. Но вам нужно только 2. Самое близкое 2. Чтобы выяснить, какие из ближайших вы используете strtotime
и проверить разницу между временными метками событий и текущей временной меткой, которые вы можете получить, позвонив time()
. После этого вы сохраняете только 2 ближайших события.
Обратите внимание, что этого можно достичь непосредственно из MySQL, но так сложнее.
@ Последнее обновление. Достаточно прочитать это, если вы не хотите знать больше.
Просто используйте этот запрос:
SELECT *
FROM ...
WHERE `time` > NOW()
ORDER BY `time` ASC
LIMIT 2