Eliminare dati in MySql

  • Creatore Discussione Creatore Discussione Botolo93
  • Data di inizio Data di inizio

Botolo93

Nuovo Utente
4 Nov 2010
17
0
0
Ciao a tutti, volevo sapere se esiste un modo per far si che un record contenuto in una tabella del db dopo tot tempo prestabilito si auto-cancelli.

Grazie
 
ciao
io faccio in che ogni volta che chiamo un mio sito un piccolo scrip cancelle i record più vecchi di un certo periodo, però nel record ho un campo che indica il tempo di inserimento del record.
inoltre se usi php so dirti come faccio il asp o altro no
 
ciao
io faccio in che ogni volta che chiamo un mio sito un piccolo scrip cancelle i record più vecchi di un certo periodo, però nel record ho un campo che indica il tempo di inserimento del record.
inoltre se usi php so dirti come faccio il asp o altro no

Ciao! Si, uso php e anche io ho un campo "data di inserimento"!Mi puo illuminare sul "come fare?"

Grazie!
 
Se il campo è strutturato come intero (cioè vi inserisci lo UNIX timestamp) allora puoi fare così:
PHP:
<?php
// connessione al database
// supponiamo che la risorsa sia $db

// definisco il numero di secondi dopo i quali cancellare
// default: un giorno
$diff = 24 * 60 * 60;

// cancello i record
mysql_query("DELETE FROM tabella WHERE ". time() ." - data_inserimento > {$diff}", $db);
?>
Ti consiglio di inserirlo in un piccolo fai che poi includerai all'inizio del tuo script, prima di ogni altra cosa.
 
Ultima modifica:
ciao
se hai avuto l'accortezza di inserire la data in timestamp è molto semplice, altrimenti devi crearti tutti i passaggi per verificare la data, masoprattutto per confrontarla con la datta attuale.
io ti faccio l'esempio con le date in timestamp
PHP:
<?php
/*
qui ci saranno i tuoi dati di connessione
*/
//scrivo il codice passo passo, poi a condersalo se ti serve lo fai tu
$oggi=time();//leggo la data attuale in timestamp secondi
//voglio eliminare i redord più vecchi di
$piu_vecchi_di=2;//o 1 o 2 4 ....
//giorni, nell es. di due giorni
$ieri=$oggi-($piu_vecchi_di*24*60*60);//data in timestamp di 2 giorni fa
//faccio la querystringa
$query="DELETE FROM tabella WHERE data_inserimento < '$ieri'";
//cioè cancello tutti i record la cui data è precedente al valore di $ieri
$result=mysql_query($query);
?>

come detto se hai la data in timestamp bastano poche righe di codice, se l'hai in formato umano è più complesso.
prima difficoltà
nel confronto 09.12.2010 e minore di 31.03.2010
seconda
se la data odierna fosse il 01.03.20xx e devi togliere un giorno, prima devi scalare anche il mese, poi
l'anno è bisestile o no quindi diventa 29.02.20xx o 28.02.20xx?
comunque la cosa è fattibile, con un poì di codice in più e che, soprattutto che WHERE data_inserimento < '$ieri' non sia un assurdo.
eventualmente dimmi come sono inserite le date, che eventualmente ti do una mano
 

Discussioni simili