2009-05-18 134 views
2

我試圖檢查一個日期是否已經過去,或者是否將來。如果end_date已過,那麼我不希望它顯示。 end_date是一個MySQL時間戳。現在即使所有新聞文章的end_date已過,也會顯示所有新聞文章。下面是我使用的檢查日期已過代碼:如何檢查日期是否已過

function dateExp($timestamp){ 

    $exp = intval($timestamp); 
    $today = intval(time()); 


    if($exp > today) return true; 
    else return false; 

} 

這裏是獲取物品並將其顯示在代碼:

$qry = "select *  
     from news 
     where display='Y' 
     order by priority, date_added, title"; 

$news = _execQry($qry); 


foreach($news as $n) 
{ 
    if(dateExp($n['end_date'])){ 
     echo '<h3>'. $n['title'] .'</h3>'; 
     echo '<p>'. $n['story'] ; 
     echo '<br />Added on '. dateFormat($n['date_added']) .'</p><br />'; 
    } 

} 

回答

4

我建議你修剪這樣你的程序有較少的數據處理查詢裏面的記錄。

$ QRY = 「從新聞
選擇*
其中顯示= 'Y' 日期和結束日期> = CURDATE()
順序按優先級,DATE_ADDED,標題」;

+0

這也給了我相同的問題 – 2009-05-18 01:06:14

1

的問題是與dateExp功能。您錯過了$標誌。因爲PHP的解釋今天作爲當今$這是你用來保存當前時間戳變量..

恆定相反,它應該是這樣的:

function dateExp($timestamp) 
{ 

$exp = intval($timestamp); 
$today = intval(time()); 


if($exp > $today) return true; 
else return false; 

} 

由於事實上,你可以精簡功能多一點點:

function dateExp($timestamp) 
{ 
    $timestamp = intval($timestamp); // make sure we're dealing wit 'numbers' 
    return ($timestamp > time());  // return TRUE if $timestamp is in the future 
} 
+0

我修復了缺失的$,並且我嘗試了簡化版本,但是我仍然遇到同樣的問題,兩個 – 2009-05-18 01:02:56