2009-05-18 135 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