Как проверить, прошла ли дата - PullRequest
2 голосов
/ 18 мая 2009

Я пытаюсь проверить, прошла ли дата или нет. Если дата окончания прошла, я не хочу, чтобы она отображалась. 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 />';
   }

}

Ответы [ 2 ]

4 голосов
/ 18 мая 2009

Я предлагаю вам обрезать записи внутри запроса таким образом, чтобы у вас было меньше данных для обработки.

$ qry = "выберите *
из новостей
где дисплей = 'Y' и end_date> = CurDate ()
упорядочить по приоритету, дата_добавлена, заголовок ";

1 голос
/ 18 мая 2009

Проблема с функцией 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
}
...