ciao
io ti consiglierei di agire in questo modo.
Aggiungi un campo alla tabella contenente il giorno in cui dovrai far spedire l'e-mail.
La prima volta il giorno lo calcoli facendo data_scadenza - preavviso, quindi all'inizio avrai una situazione del genere:
DATA SCADENZA 31/03/2010
PREAVVISO 21
FREQUENZA 5
PROX_AVVISO 10/03/2010
poi ogni volta che effettui il login controlli se il giorno corrente è uguale al giorno contenuto in PROX_AVVISO, e se è uguale fai partire l'e-mail e aggiorni il campo PROX_AVVISO in base al valore di FREQUENZA.
Quindi, quando verrà effettuato il login il giorno 10/03, farai partire l'e-mail e poi aggiornerai i campi della tabella in questo modo:
DATA SCADENZA 31/03/2010
PREAVVISO 21
FREQUENZA 5
PROX_AVVISO 15/03/2010
e così via
Fatto questo però dovrai considerare anche altre cose tra cui:
potrebbe essere che un utente non si connetta il giorno preciso (ovvvero potrebbe non connettersi il 10/03/2010 ma l'11)
In questo caso devi controllare se la data PROX_AVVISO è minore o uguale della data corrente e in tal caso far partire l'e-mail e aggiornare la data di PROX_AVVISO.
Anche in questo caso devi stare attento, infatti, se l'utente non si connette mai e si connette il 16/03/2010, il sistema controllerà che la data di PROX_AVVISO (settata a 10/03/2010) sia minore o uguale (e lo è) del giorno corrente e farà partire l'e-mail, ma quando aggiornerà la data di PROX_AVVISO andrà a inserire il valore 15/03/2010. In questo modo se l'utente farà un login il giorno dopo (o anche il giorno stesso) riceverà una nuova e-mail riferita però al giorno 15/03/2010.
Per evitare ciò, quando aggiorni il valore di PROX_AVVISO, devi andare a controllare che il nuovo valore sia maggiore della data corrente, in caso contrario devi ricalcolarlo di nuovo (in base alla frequenza), controllare se va bene e fare l'update del campo.
Spero di esserti stato d'aiuto
Se hai dubbi chiedi pure
ciao ciao e buon lavoro

Rispondi quotando