2009-05-18 9 views
2

Ich versuche zu überprüfen, ob ein Datum vergangen ist oder ob es die Zukunft ist. Wenn das end_date abgelaufen ist, möchte ich nicht, dass es angezeigt wird. end_date ist ein MySQL-Zeitstempel. Im Moment werden alle Nachrichten angezeigt, auch wenn ihr Enddatum abgelaufen ist. Hier ist der Code verwende ich zu überprüfen, ob das Datum abgelaufen ist:Wie überprüft man, ob ein Datum vergangen ist

function dateExp($timestamp){ 

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


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

} 

Hier ist der Code, der den Artikel erhält und zeigt sie:

$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 />'; 
    } 

} 

Antwort

4

ich schlage vor, dass Sie die Datensätze in der Abfrage trimmen, die Art und Weise Sie das Programm weniger Daten zu verarbeiten hat.

qry $ = "select *
von Nachrichten
wo display = 'Y' und end_date> = CURDATE()
Reihenfolge nach Priorität, DATE_ADDED, Titel";

+0

Dies gab mir auch das gleiche Problem –

+1

Wenn Ihr Feld ist ein INT anstelle eines Datums oder DATETIME Feld, könnten Sie auch verwenden end_date> = UNIX_TIMESTAMP() – nickf

+0

end_date ist ein Zeitstempel –

1

Das Problem mit der Funktion dateExp ist. Sie vermissen ein $ Zeichen. Aufgrund dieses PHP interpretiert heute als eine Konstante statt $ heute das ist die Variable, die Sie die aktuellen Zeitstempel zu halten verwenden ..

Es sollte so aussehen:

function dateExp($timestamp) 
{ 

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


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

} 

Wie eine Frage der Tat kann man die Funktion ein wenig mehr optimieren:

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

Ich reparierte die fehlenden $ und ich versuchte Ihre stromlinienförmige Version, aber ich habe immer noch das gleiche Problem mit –

Verwandte Themen