Io farei una bella funzione di controllo cosi' che la richiami ogni volta che deve caricare i banner
Codice PHP:
function bannerChecker($opts)
{
$q = "select * from banners order by data_scadenza desc" ;
// Carichiamo tutti i banner a partire da quelli con data di scadenza piu' alta
$link = connect(); // funzione di connessione al database
$ris = mysql_query($q,$link) ;
if( !$ris )
return false ;
$now = date( "Y-m-d H:i:s" , time() ) ;
while( $curr = mysql_fetch_array($ris) )
{
// LE DATE in mysql se sono salvate di tipo datetime saranno in fomrato std unix YYYY-mm-dd HH:ii:ss e potrai fare controlli lessicografici
// Banner scaduto
if( $curr["data_scadenza"]> $now )
{
// update PER FAR SCADERE IL BANNER
$qs = "update banners set attivo=0 where id='".$curr["id"]."' limit 1 " ;
$ris = mysql_query($qs);
//qui gestisci il risultato della query per tracciare cosa hai aggiornato magari in un log file
}
}
return true ;
}
Con una funzione del genere potri laciare il controllo ogni volta che vorrai quindi prima di caricare il banner in una pagina invochi la funzione poi carichi i banner che restano attivi.
E' un'ida ci sono anche soluzioni migliori che presuppongono altre cose , per esmpio che il banner sia attivo fino al giorno x e ogni notte tramite cron table avvi lo script di controllo con una funzione simile per cui sai a priori che ogni notte a mezzanote i banner vengono controllati. Oppure carichi tra quelli attivi e controlli se il banner e' scaduto se lo e' aggiorni il suo stato e ne carichi un altro.
Tutto questo per otimizzare, cosi' riduci il numero di query che vengono fatte al db etc...
Pensaci.