Bir tarih geçti olmadığını nasıl kontrol

2 Cevap php

Bu gelecekte eğer ben bir tarih geçti olmadığını kontrol etmek için çalışıyor ya duyuyorum. End_date geçti, sonra ben bunu göstermek istemiyorum. end_date MySQL zaman damgası. Şu anda tüm haber makaleleri kendi end_date geçti bile görüntüleniyor. İşte tarih geçti olmadığını kontrol etmek için kullanıyorum kodu:

function dateExp( $timestamp ){

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


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

}

İşte makaleler alır ve onları görüntüleyen kodu:

$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 Cevap

Ben size programlamak yolu işlemek için daha az veri var sorgu içindeki kayıtları Döşeme öneririz.

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

Sorun dateExp fonksiyonu ile. Bir $ işaretini kaçırıyorsun. Çünkü mevcut damgası tutmak için kullandığınız değişken today as a constant yerine $today ki o PHP YORUMLAYAN arasında ..

Bu gibi olmalıdır:

function dateExp( $timestamp )
{

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


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

}

Nitekim olarak biraz daha işlevini hızlandırabilirsiniz:

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