[RISOLTO]Aiuto per Record che si deve autocancellare

  • Creatore Discussione Creatore Discussione siriano
  • Data di inizio Data di inizio

siriano

Nuovo Utente
6 Nov 2013
7
0
0
Un saluto a tutti, sono nuovo, fresco fresco, praticamente appena sfornato...
Complimenti per questo Grande Forum, soprattutto per uno come me che è fresco fresco anche di programmazione.

Mi serve un aiutone per questo problemuccio, ovviamente per voi grandi programmatori:
un utente arriva sul sito, inserisce la sua email in un form che viene registrata in un database
insieme alla data di inserimento e fin qui tutto fatto e funzionante con relativa conferma via email, ecc.

Voglio fare in modo che quell'utente dopo 3 giorni dall'inserimento, o 30 giorni per altri casi,
venga automaticamente cancellato dal database.

Ora io immagino che il campo data_inserimento deve essere ovviamente di tipo data ma deve avere altre specifiche?
E poi per far cancellare quell'utente dopo 3 o 30 giorni?
Ho provato qualcosa e letto parecchio ma da qui in poi sono affossato
mysql_query("DELETE FROM iscritti WHERE data_inserimento < '"."'", $db) or die(mysql_error());
è possibile fare qualcosa tipo $data_inserimento + ....... ma come si fa in php a dirgli + 3 o 30 giorni?

Grazie a tutti, belli e brutti.
Siriano
 
ciao
prima di risponderti è bene che tu dica in che formato hai salvato la data di inserimento (es. gg/mm/yy o altro modo?)
quando si lavora con le date è importante la loro formattazione
 
Grazie per le risposte, per borgo italia: il mio problema è proprio quello cioè in che formato deve essere salvata la data
e come deve essere il campo mysql,
per criric: il post lo avevo già letto ma non risponde alle mie domande, come si fa a dirgli 3 0 30 giorni,
li si parla di un anno esatto che probabilmente è tutta un'altra funzione.

Partito dal presupposto che io in programmazione sono un neonato.
Salutoni.
 
ciao
per fare dei confronti tra date le date dovrebbero essere nel formato anno mese giorno e non nel classico formato italiano (giorno mese anno)
questo perchè (es)
data_1 = 10/11/2013
data_2 = 30/03/2013

se fai il confronto risulta che data_2 maggiore di data_1 il che è assurdo, mentre nel caso aa mm gg
data_1 = 2013/11/10
data_2 = 2013/03/31

nel confronto risulta giustamente che data_1 è maggiore di data_2
detto questo veniamo al tuo problema, è mio stile non salvare nel db le date in formato data (a mysql non glene può fregà de meno cosa contiene un campo), ma uso il timestamp (secondi trascorsi dal 1 gennaio 1970 00:00:00 GMT)
quindi nelle mie tabelle il campo è
data int(12)
cioè quando inserisco un record (tralascio tutto il resto schematizzando)
PHP:
<?php
$data_inserimento=time();//espresso in secondi
$query ="INSERT INTO tabella(data) VALUES($data_inserimento)";
?>
poi quando devo leggere o, come devi fare tu
PHP:
<?php
$inserito_il = $row['data'];//letto dalla tabella
//per visualizzarla in formato umano e italiano
echo "inserito il ".date("d.m.Y",$inserito_il);//es output -> inserito il 07.11.2013
//per verificare se l'inserimeto e più o meno vecchio di es 3 gg
$oggi=time();//leggo la data di oggi sempre in timestamp
$limite= $oggi - (3*24*60*60);//tolgo tre gg, sempre espimendo il tutto in secondi
if($inserito_il > $limite){
	//non sono passati tre giorni dall'inserimento del record
}else{
	//sono passati tre o più giorni dall'inserimento
}
?>
quindi in funzione se passati o no fai quello che devi fare, evidentemente puoi cambiare il numero di giorni (es 22*24*60*60)
comunque questo è come faccio io, ma non è l'unico metodo, è quello con cui io mi trovo meglio
 
come si fa a dirgli 3 0 30 giorni
1 anno
Codice:
DELETE from tabella_registrati WHERE dataReg <= DATE_SUB(CURDATE(), INTERVAL 1 YEAR)
1 mese
Codice:
DELETE from tabella_registrati WHERE dataReg <= DATE_SUB(CURDATE(), INTERVAL 1 MONTH)
3 giorni
Codice:
DELETE from tabella_registrati WHERE dataReg <= DATE_SUB(CURDATE(), INTERVAL 3 DAY) // o DAYS da provare
 
Grazie per le risposte, esaurienti e capibili.
Il metodo più adatto a me penso sia quello di borgo al quale chiedo come ultima cosa:
PHP:
<?php 
$inserito_il = $row['data'];//letto dalla tabella 
//per visualizzarla in formato umano e italiano 
echo "inserito il ".date("d.m.Y",$inserito_il);//es output -> inserito il 07.11.2013 
//per verificare se l'inserimeto e più o meno vecchio di es 3 gg 
$oggi=time();//leggo la data di oggi sempre in timestamp 
$limite= $oggi - (3*24*60*60);//tolgo tre gg, sempre espimendo il tutto in secondi 
if($inserito_il > $limite){ 
    //non sono passati tre giorni dall'inserimento del record  <<<  QUI COSA DOVREI METTERCI?
}else{ 
    //sono passati tre o più giorni dall'inserimento   <<< QUI EVIDENTEMENTE LA STRINGA PER CANCELLARE I RECORD SCADUTI
} 
?>
puoi cortesemente inserirmi 2 esempi concreti?

Grazie e saluti.
 
Ultima modifica di un moderatore:
//sono passati tre o più giorni dall'inserimento <<< QUI EVIDENTEMENTE LA STRINGA PER CANCELLARE I RECORD SCADUTI
La stringa per cancellare i record scaduti è una query che ti è stata già suggerita da Criric.
Per quanto riguarda il "come" inserire una query e lanciarla ti linko la voce del manuale che è sicuramente più chiaro di me.
//non sono passati tre giorni dall'inserimento del record <<< QUI COSA DOVREI METTERCI?
Poi per quanto riguarda cosa mettere qui dipende da quello che vuoi fare con i record "giovani".
 
Ok grazie a tutti.

C'è un programmatore php che mi aiuta a realizzare un progetto che ho in testa, in pratica mi serve uno script per la gestione di abbonamenti mensili,
vendita di previsioni del lotto in abbonamento.

Saluti.
 
Ti conviene postare la richiesta in Offerte e Richieste di lavoro : è più facile che li la richiesta venga vista. Puoi anche indicare se il lavoro sarà retribuito o se la richiesta ha titolo gratuito direttamente nel titolo della discussione, prova a dare un occhiata a quelle già esistenti.
 
Scusa se intervengo quando tutto sembra concluso ....

io aspetterei a cancellare, piuttosto escluderei il "passato" dalle viste della gestione corrente,
il passato potrebbe essere fonte di statistiche, di ricerche sui più attivi, di chi ha abbandonato ... e altre informazioni

ciao
Marino
 
ciao
non ho capito cosa intendi, generalmente non cancelliamo nulla.
criric intendeva che il post con la richiesta
C'è un programmatore php che mi aiuta.....
sarebbe meglio scriverlo nella sezione "offerte e richieste di lavoro", per due motivi:
1) qui non c'entra nulla
2) chi cerca/offre lavoro non guarda la sez php, ma quella di offerte/richieste
 
Io credo che marino51 si riferisse alla DELETE di questa discussione
Sono completamente d'accordo
Preferisco aggiungere un campo con attivo 0 o 1, aggiornarlo con un UPDATE e tenermi la cronologia degli utenti registrati
 

Discussioni simili