[RESOLU] requète sql sur date

Petit nouveau ! | 3 Messages

27 déc. 2012, 21:25

Bonjour,
Je voudrais envoyer des mails aux clients après 7 jours à partir dd'une date connue (date_add dans table order_history) dans la BDD.

Voici ma requète:

Code : Tout sélectionner

$emails = Db::getInstance()->ExecuteS(' SELECT o.id_order, oh.id_order, c.id_cart, c.id_lang, cu.id_customer, cu.firstname, cu.lastname, cu.email FROM '._DB_PREFIX_.'orders o LEFT JOIN '._DB_PREFIX_.'customer cu ON (cu.id_customer = o.id_customer) LEFT JOIN '._DB_PREFIX_.'cart c ON (c.id_cart = o.id_cart) LEFT JOIN '._DB_PREFIX_.'order_history oh ON (o.id_order = oh.id_order) WHERE o.valid = 0 AND DATE_SUB(CURDATE(),INTERVAL 7 DAY) <= oh.date_add AND oh.id_order_state = 10 AND cu.id_customer NOT IN (SELECT id_customer FROM '._DB_PREFIX_.'unpaid_relances_log WHERE email_relance = 1) GROUP BY o.id_customer ');
Ce code fonctionne mais envoie l'email entre le 0ème et 7ème jours défini. Or je voudrais qu'il soit envoyé à partir du 7ème jour.
Je n'arrive pas du tout à faire la requète nécessaire pour cela, pas assez calé !

Pouvez-vous m'aider à surmonter ce gros (pour moi) problème ?

Mammouth du PHP | 2278 Messages

27 déc. 2012, 21:46

Je comprends ceci:
curdate = 31
debut = 24
7 j a partir de 24 ça fait
24 25 26 27 28 29 30
ou
25 26 27 28 29 30 31
maintenant tu veux peut-être envoyer ton mail le 7àme jour après la date d'enregistrement dans la table?
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Petit nouveau ! | 3 Messages

27 déc. 2012, 21:55

Tout d'abord merci de m'avoir répondu.

Pour info, je ne maitrise pas vraiment les fonctions sql. J'ai beaucoup cherché sans vraiment arriver à quelque chose qui fonctionne parfaitement.
Vous avez vu juste, je veux que l'email soit envoyé après le 7me jour.
Bonne soiréé

Mammouth du PHP | 2278 Messages

27 déc. 2012, 22:05

Le7ème jour c'est une simple égalité.
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Petit nouveau ! | 3 Messages

27 déc. 2012, 22:32

Je viens d'essayer avec l'égalité. C'est nettement mieux. Dire que cela faite 2 jours que je m'arrache des cheveux sur cela!
Je veux malgré tout comprendre quand vous dites :
curdate = 31
debut = 24
7 j a partir de 24 ça fait
24 25 26 27 28 29 30
ou
25 26 27 28 29 30 31

ca veut dire que la fonction curdate compte la date courante sur laquelle l'intervalle de 7 jours est calculé ?
Donc aujourd'hui 27+ 7 jours, d'ou le fait que les email partent d'aujourd'hui jusqu'au 7me jours ?
Mais cest alors quoi le 24 dans votre exemple ?


Vous m'avez aidé en moins de 5 minutes.
Vous avez toutes ma gratitude.

Bonne fête de fin d'année.
Salutation.