Бих се отказал от използването на PHP методите за дата/час и бих разчитал на MySQL да даде заявка, която изглежда като
SELECT * FROM table_name
WHERE date > CURRENT_DATE
OR (
date = CURRENT_DATE
AND
time > CURRENT_TIME
)
ORDER BY date ASC, time ASC LIMIT 1
ИЛИ се уверява, че получава правилните записи, в противен случай частта TIME би блокирала показването на резултат в 03:00 от следващия ден, ако текущото време беше в 06:00
Виждам, че използвате стойности на времеви отпечатъци там, така че винаги можете да подавате числото за дата на PHP на мястото на CURRENT_DATE. Това ще даде краен скрипт на
$timestamp_now = strtotime(date('d-m-Y')); //Creates a timestamp of the currect date
$sql = mysql_query('SELECT * FROM table_name
WHERE date > '.$timestamp_now.'
OR (
date = '.$timestamp_now.'
AND
time > CURRENT_TIME
)
ORDER BY date ASC, time ASC LIMIT 1') or die(mysql_error());
$data = mysql_fetch_array($sql);
Бих посъветвал да обмислите промяна на базата данни, ако е възможно, за да я съхранявате само като поле DATETIME на MySQL, тъй като тогава можете да промените тази заявка просто на WHERE datetime > NOW()
, но това зависи изцяло от вас. Просто винаги съм смятал, че обработката на датата в MySQL е по-логична от PHP.