Zrezygnowałbym z używania metod daty/godziny PHP i polegał na MySQL, który daje zapytanie, które wygląda jak
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 upewnia się, że otrzymuje poprawne rekordy, w przeciwnym razie część CZAS zostałaby zablokowana, tj. wynik o 03:00 od następnego dnia przed pojawieniem się, jeśli aktualny czas był o 06:00
Widzę, że używasz tam wartości znaczników czasu, więc zawsze możesz przekazać numeryczne daty PHP zamiast CURRENT_DATE. Dałoby to ostateczny skrypt
$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);
Radziłbym rozważyć zmianę bazy danych, jeśli to możliwe, aby przechowywać ją jako pole MySQL DATETIME, ponieważ wtedy możesz zmienić to zapytanie na po prostu WHERE datetime > NOW()
, ale to zależy wyłącznie od Ciebie. Po prostu zawsze uważałem, że data MySQL jest bardziej logiczna niż PHP.