Ik zou de PHP-datum/tijd-methoden gebruiken en vertrouwen op MySQL die een zoekopdracht geeft die eruitziet als
SELECT * FROM table_name
WHERE date > CURRENT_DATE
OR (
date = CURRENT_DATE
AND
time > CURRENT_TIME
)
ORDER BY date ASC, time ASC LIMIT 1
De OR zorgt ervoor dat het de juiste records krijgt, anders blokkeert het TIME-gedeelte, d.w.z. een resultaat om 03:00 vanaf de volgende dag verschijnt als de huidige tijd om 06:00 was
Ik zie dat je daar tijdstempelwaarden gebruikt, dus je kunt altijd nog steeds het PHP-datumnummer invoeren in plaats van CURRENT_DATE. Dit zou een definitief script geven van
$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);
Ik zou adviseren te overwegen de database te wijzigen, indien mogelijk, om deze op te slaan als een MySQL DATETIME-veld, omdat je deze query dan eenvoudig kunt wijzigen in WHERE datetime > NOW()
, maar dat is helemaal aan jou. Ik heb MySQL-datumafhandeling altijd logischer gevonden dan PHP's.