Inviare mail dopo due giorni lavorativi

  • Creatore Discussione Creatore Discussione Maures
  • Data di inizio Data di inizio

Maures

Utente Attivo
25 Mar 2015
45
0
0
Buongiorno a tutti,
dovrei implementare uno script che mandi automaticamente una mail dopo due giorni lavorativi che un record è stato inserito in un db (usando mysql) senza che sia stato modificato (è presente un campo "modificato" con valori Y o N)

Lo scopo di questo script è avvisare che è presente uno o più record nel database, ma non sono ancora stati modificati da due giorni lavorativi.

Grazie ai timestamp presenti nei record non sarebbe un problema creare questo script, il problema è che dovrebbe farlo indifferentemente dalla pagina in cui l'utente si trovi.
Se lo mettessi nella pagina in cui mostro i record sarebbe inutile, proprio perché il suo scopo è portare gli utenti proprio su quella pagina.

In parole povere, dovrebbe essere uno script\funzione globale.

Non so se mi sono spiegato bene, in caso non esitate a chiedere chiarimenti!
 
Se ho capito bene quello che ti serve avere è un sistema che una o più volte al giorno controlli se esistono record che non sono stati aggiornati da più di due giorni dalla data di ultima modifica. Per fare questo potresti utilizzare i cron job assieme ad una query che verifica se la data di aggiornamento è minore della data odierna - 2gg. In questo credo di poterti aiutare. Con i cron job dovresti riuscirei a filtrare anche i giorni non lavorativi. Facendoli partire solamente i giorni feriali.


Saluti.
G.G.
 
Ultima modifica:
Se ho capito bene quello che ti serve avere è un sistema che una o più volte al giorno controlli se esistono record che non sono stati aggiornati da più di due giorni dalla data di ultima modifica. Per fare questo potresti utilizzare i cron job assieme ad una query che verifica se la data di aggiornamento è minore della data odierna - 2gg. In questo credo di poterti aiutare. Con i cron job dovresti riuscirei a filtrare anche i giorni non lavorativi. Facendoli partire solamente i giorni feriali.


Saluti.
G.G.

grazie per la risposta!

faccio un esempio, ma credo tu abbia capito cosa mi serva.

in una tabella vengono inseriti dei record (possiamo chiamarli "domande") con una data di inserimento e due campi: "letto" e "risposto" che hanno solo i valori Y o N
quando un utente legge o risponde a una domanda, i campi passano da N a Y

il sistema di cui ho bisogno deve per l'appunto controllare quelle domande che non sono state lette o che non hanno una risposta da più di due giorni lavorativi (quindi quelle che hanno i campi "letto" o "risposto" a N)

non ho mai usato i cronjob con php, provo a informarmi, ma in linea di principio sono probabilmente ciò di cui ho bisogno.
 
Allora credo che ti convenga aggiungere una data di modifica, nel senso, per fare il confronto, quindi capire l'ultima data di aggiornamento confronterai la ( data di oggi - 2gg ) in questo modo:

PHP:
$sql = 'SELECT FROM domande WHERE DATEDIFF(CURDATE(), data ) > 2';

Dove CURDATE() è la data di oggi e data è il campo data salvato nel db.. In pratica stiamo selezionando tutti gli utenti o le domande che hanno una data minore di 2 giorni da quella odierna, se li trova, esegue qualcosa su quelli che ha trovato, in questo caso un UPDATE dei campi interessati.. Puoi anche aggiungere altre condizioni al WHERE per perfezionare la selezione, ad sempio:

PHP:
$sql = 'SELECT FROM domande WHERE DATEDIFF(CURDATE(), data ) > 2 AND letto = 'Y' AND risposto ='N' > 2';

Controlla le virgolette su Y e N non ho visto se sono corrette :P

Nel caso le trova aggiorna i valori e spedisce la mail in un ciclo..
Se i destinatari sono molti, ti conviene inserirli in un unico BBC della mail e ripetere il ciclo a blocchi da 99.


Io per i cron jobs utilizzo questo servizio gratuito che ti da fino a 50 cron jobs al giorno gratis https://www.setcronjob.com e ti permette di aggiungere molti parametri interessanti per l'esecuzione.
 
Ultima modifica:

Discussioni simili