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.