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

2 回答 2

5

我建议您修剪查询中的记录,这样您的编程需要处理的数据较少。

$qry = "select *
from news
where display='Y' and end_date >= CurDate()
order by priority, date_added, title";

于 2009-05-18T00:49:51.283 回答
1

问题在于 dateExp 函数。您缺少一个$符号。因为 PHP 将今天解释为一个常量,而不是$today,后者是您用来保存当前时间戳的变量。

它应该是这样的:

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
}
于 2009-05-18T00:43:56.820 回答