Přestal bych používat metody data/času v PHP a spoléhal bych na to, že MySQL poskytne dotaz, který vypadá jako
SELECT * FROM table_name
WHERE date > CURRENT_DATE
OR (
date = CURRENT_DATE
AND
time > CURRENT_TIME
)
ORDER BY date ASC, time ASC LIMIT 1
OR zajišťuje, že dostává správné záznamy, jinak by se část TIME zablokovala, tj. neobjevil by se výsledek ve 03:00 následujícího dne, pokud by aktuální čas byl v 06:00
Vidím, že tam používáte hodnoty časového razítka, takže vždy můžete místo CURRENT_DATE zadat číselné datum PHP. To by poskytlo konečný skript
$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);
Doporučil bych zvážit změnu databáze, pokud je to možné, aby se ukládala pouze jako pole MySQL DATETIME, protože pak můžete tento dotaz změnit na jednoduše WHERE datetime > NOW()
, ale to je čistě na vás. Vždy jsem považoval zpracování data MySQL za logičtější než PHP.