2010-11-18 19 views
1

Olayları başlangıç ​​tarihi sırasına göre görüntüleyen bir etkinlik takvimim var. Her şey harika çalışıyor ama bir sorun var. Bugünün tarihinde gerçekleşen olaylar görüntülenmez. Olayları geçtikten sonra olayları kaldırmak için "if" ifadem sorun olduğuna inanıyorum.PHP olayı için tarih sıralama

<? while($row = mysql_fetch_assoc($result)) { 
$id = $row['id']; 
$title = $row['title']; 
$text = $row['text']; 
$image_url = $row['image_url']; 
$start_date = date('F d, Y', strtotime($row['start_date'])); 
$start_hour = $row['start_hour']; 
$start_minute = $row['start_minute']; 
$start_am_pm = $row['start_am_pm']; 
$end_date = date('F d, Y', strtotime($row['end_date'])); 
$end_hour = $row['end_hour']; 
$end_minute = $row['end_minute']; 
$end_am_pm = $row['end_am_pm']; 
$tba = $row['tba']; 

if(strtotime($row['end_date']) > date('U')) { 
?> 
+0

olduğunu. Ayrıca, $ id = $ row ['id'] 'yapmak için bir neden yoktur, sadece kodunuzu temiz tutmak ve zaman kazanmak için' $ row ['id'] 'kullanın – Webnet

cevap

3

İlk deneyin olurdu

date('U') == time() 

Yani time yerine date kullanabilirsiniz:, sadece bunu işaret etmek istiyorum.

Sorunuz için şimdi. Etkinliğiniz için end_date bugün ayarlanmışsa, muhtemelen günün başındadır (ör. 2010-11-18 00:00:00). Muhtemelen şartlı çalışma nedeniniz yok, çünkü şimdi gece yarısı geçiyor, geçerli tarih/saat end_date'dan daha büyük.

bu deneyin:, sorun

çalıştırılıyor sorgu nedir
if (strtotime($row['end_date']) == strtotime('TODAY')) { 
    // event is today 
} 
0

$ row ['end_date'] öğesinin yalnızca saati değil tarihi döndürdüğünü tahmin ediyorum. Yani strtotime($row['end_date']) will = 12:00 ve date('U') geçerli zamana eşit olarak dönecektir. Eğer $ sıranın tarihinde 00:01 AM bu kaçsam

Yani [ 'end_date'], sen

if("12:00AM today" > "12:01AM today") { 

karşılaştırılması tüm

if (strtotime($row['end_date']) >= strtotime(date('Y-m-d'))) {