IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Chercher les champs qui vont expirer [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2007
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Novembre 2007
    Messages : 146
    Points : 48
    Points
    48
    Par défaut Chercher les champs qui vont expirer
    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 ^^

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Utilise DATEDIFF()

  3. #3
    Membre du Club
    Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2007
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Novembre 2007
    Messages : 146
    Points : 48
    Points
    48
    Par défaut
    Merci beaucoup, en effet ca va alléger la requête avec une simple condition (pour un rappel).

    Je suppose que DATEDIFF ne prends pas de timestamp, je vais devoir formater celui-ci ou alors utiliser directement une fonction qui renvoie la date du jour comme CURDATE().

    Merci Je met résolue ! Je ne pense pas avoir d'autres problèmes ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Chercher les batchs qui utilisent un Module
    Par a_karim_fr dans le forum z/OS
    Réponses: 11
    Dernier message: 21/10/2009, 14h11
  2. Quels sont les champs qui ont été modifiés?
    Par Michelk12 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 09/12/2008, 11h11
  3. [Wii] Les accessoires qui vont bien
    Par afrodje dans le forum Consoles
    Réponses: 25
    Dernier message: 21/07/2008, 00h25
  4. comment exclure les champs qui ont pour valeur NULL
    Par agur29 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 05/10/2007, 19h23
  5. Sélectionnez les champs qui n'apparaissent qu'une fois
    Par jeyce dans le forum Langage SQL
    Réponses: 3
    Dernier message: 21/07/2005, 19h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo