Bonjour,
Je suis en train de faire un site qui a besoin d'envoyer des mails de rappel à toutes les personnes à qui leur offre va expirer.
J'aimerai envoyer le mail 15j avant, 7j avant, 3j avant et le jour même.
j'ai une table users_offre qui contient la date d'expiration et l'id de user.
j'ai une autre table users qui elle contient l'id de l'user et son email.
Ma date est de la forme YYYY-MM-DD hh:mm:ss.
Mon script serai un cron placé dans cron.daily mais le soucis c'est que c'est pas facile de gérer les dates.
J'avais pensé à une requete de type :
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part SELECT users.email AS email FROM users_offre LEFT JOIN users ON users.id=users_offre.userid WHERE `active` = 'yes' AND ( ((UNIX_TIMESTAMP(next_payed)-NOW() <= 3600*24*15) AND (UNIX_TIMESTAMP(next_payed)-NOW() >= 3600*24*14)) OR ((UNIX_TIMESTAMP(next_payed)-NOW() <= 3600*24*7) AND (UNIX_TIMESTAMP(next_payed)-NOW() >= 3600*24*6)) OR etc ...)
Le soucis c'est que ca fait lourd je pense, je ne sais même pas si cela fonctionne. N'y a t-il pas une façon plus simple ?
PS : (UNIX_TIMESTAMP(next_payed)-NOW() <= 3600*24*15) AND (UNIX_TIMESTAMP(next_payed)-NOW() >= 3600*24*14) : je fais pour l'intervalle, car avec le cron ca ne tombera pas pile sur la date avec l'heure et les secondes ^^
Partager