Saya akan membuang menggunakan metode tanggal/waktu PHP dan mengandalkan MySQL yang memberikan kueri yang terlihat seperti
SELECT * FROM table_name
WHERE date > CURRENT_DATE
OR (
date = CURRENT_DATE
AND
time > CURRENT_TIME
)
ORDER BY date ASC, time ASC LIMIT 1
ATAU memastikan bahwa ia mendapatkan catatan yang benar jika tidak, bagian TIME akan diblokir, yaitu hasil pada pukul 03:00 dari hari berikutnya muncul jika waktu saat ini pukul 06:00
Saya melihat Anda menggunakan nilai stempel waktu di sana sehingga Anda selalu dapat meneruskan numerik tanggal PHP sebagai ganti CURRENT_DATE. Ini akan memberikan skrip akhir
$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);
Saya akan menyarankan mempertimbangkan untuk mengubah database jika memungkinkan untuk menyimpan hanya sebagai bidang DATETIME MySQL, karena Anda dapat mengubah kueri ini menjadi WHERE datetime > NOW()
, tapi itu sepenuhnya terserah Anda. Selalu menemukan penanganan tanggal MySQL lebih logis daripada PHP.