Record eliminati dopo una data prestabilita
Salve a tutti, ho un nuovo quesito da porvi, ho cercato in rete e ho trovato qualche topic che parlava del mio quesito, ma non mi hanno dato la risposta che volevo.
Allora io ho un topic dove l'utente inserisce una data di un futuro evento, una volta pubblicato questo evento, vorrei che rimanesse in lista fino al giorno dell'evento, e che il giorno seguente si cancellasse automaticamente, o comunque che sparisse dalla lista, anche senza elminarlo dal database.
In pratica l'utente inserisce un evento programmato per il: 12-02-2012, una volta pubblicato compare in lista, poi però il giorno 13-02-2012 vorrei che sparisse dalla lista, o meglio ancora che si eliminasse dal database.
Il database ha oltre ai vari campi di testo ha 3 campi distinti per: giorno, mese, anno.
Come potrei risolvere?
Query con WHERE su seconda tabella
Ragazzi ho letto parecchie cose, tra JOIN ecc, ma non mi è chiaro le guide sono molto vaghe.
Per spiegarmi io devo fare una query che preleva dei dati da una tabella (tab1) poi nel controllo WHERE deve confrontore la data odierna, con la data contenuta in una seconda tabella (tab2).
Stamperò a video solo i dati della tab1, la tab2 la richiamo solo per il controllo WHERE.
Ho provato con:
Codice PHP:
<?
$data_odierna = date("d-m-Y");
$query = "SELECT campo1, campo2 FROM tab1 WHERE tab2.data_db<='".$data_odierna."' ORDER BY id DESC LIMIT 5";
?>
EDIT:
Citazione:
Originalmente inviato da
alemoppo
Per leggere i dati dal database, presumo utilizzi una query.
Quindi: se non vuoi eliminare l'evento, potresti mettere (tramite WHERE) la condizione nella query, quindi prelevare soltanto gli eventi con la data "futura".
Se invece vuoi eliminarli, prima di leggerli (come penso stai facendo adesso), dovresti fare una query
DELETE, selezionando gli eventi "passati" (sempre con il WHERE).
Ciao!
EDIT:
Invece di salvare giorno/mese/anno in campi separati, potresti salvarli secondo lo standard della
NOW(), in modo che poi puoi lavorarci direttamente con le
funzioni mysql per le date (leggi "SQL Date Data Types" nel link per impostare il tipo di dato).
Oppure, tramite PHP, dal giorno/mese/anno/ora/minuti/seconti, puoi ricavare il timestamp (tramite la
mktime()) e salvi quello.
non posso utilizzare ne NOW() ne mktime() perchè la data è scritta a mano in un campo di testo! Ho modificato il DB creando un campo unico con formato: GG-MM-AAAA.
Quindi illuminami, se faccio solo un select nel where metto
$data_evento<=$data_odierna
nel delet? La stessa cosa?