Partage
  • Partager sur Facebook
  • Partager sur Twitter

Récupérer enregistrements 7 jours avant date anniv

Sujet résolu
    14 mai 2018 à 19:08:45

    Bonjour à tous,

    Je cherche à faire une requête SQL seulement pour récupérer les membres inscrits l'année dernière, 7 jours avant leurs dates anniversaires afin de leur envoyer un mail.

    J'ai tout essayé BETWEEN, DAYOFYEAR, je trouve pas du tout comment faire.

    Merci d'avance

    -
    Edité par Julie75017 14 mai 2018 à 19:09:45

    • Partager sur Facebook
    • Partager sur Twitter
      14 mai 2018 à 19:32:05

      Bonsoir, en pur SQL ou avec du PHP ?
      • Partager sur Facebook
      • Partager sur Twitter
      READ THE DOCS !
        14 mai 2018 à 22:52:43

        Bonsoir,

        Et bien, c'est pour utiliser dans du CODE PHP, mais une requête PUR SQL c'est bien pour tester dans PHPMYADMIN.

        Merci d'avance

        • Partager sur Facebook
        • Partager sur Twitter
          15 mai 2018 à 1:50:26

          cette question car, il est probable si je comprend l'intention que tu feras tourner un fois par jour ton script php pour récupérer la liste des personnes pour l'envoi de mail (avec un cron ou autre) ce qui simplifie le problème...

          tous les jours tu prépare la date avec php qui correspond à la date de ce même jour plus 7 sans l'année. tu en fait qlque chose qui ressemble à "%-$moisCalcule-$jourCalcule" que tu passes à un select

          dans l'idée :

          SELECT * FROM table_users WHERE date_naissance LIKE "%-05-22";

          -
          Edité par nico41 15 mai 2018 à 1:52:25

          • Partager sur Facebook
          • Partager sur Twitter
          READ THE DOCS !
            15 mai 2018 à 14:42:14

            Bonjour Nico,

            Oui, tu as bien compris, il y a une tache cron qui va excuter le script PHP chaque jour. Je n’arrête pas de relire ce que tu me dis de faire en PHP mais j'arrive pas à capter ce que tu veux me faire comprendre. tu peux être plus explicite ?

            merci d'avance

            • Partager sur Facebook
            • Partager sur Twitter
              15 mai 2018 à 19:58:06

              <?php
              
              // voici un exemple bidon 
              // qui vaut mieux qu'un long discours
              
              // bien sur à tester et adapter
              
              try {
                  $pdo = new \PDO($dsn, $username, $password);
                  $pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
                  $pdo->setAttribute(\PDO::ATTR_DEFAULT_FETCH_MODE, \PDO::FETCH_ASSOC);
              } catch (\PDOException $e) {
                  die($e->getMessage());
              }
              
              $dansSeptJours = (new \DateTime())->add(new \DateInterval("P7D"));
              
              $like = sprintf('%-%s-%s ', (string)$dansSeptJours->format('m'), (string)$dansSeptJours->format('d'));
              // si $dansSeptJours donne le 2018-05-22 => $like sera "%-05-22"
              
              // ce qui fait que tu chercheras dans ta base/table utilisateurs
              // tous ceux dont la date de naissance contient le mois et le jour voulu
              // leur année ne nous interesse pas, seul le jour du mois compte pour l'anniversaire
              // à condition que les dates soient bien au format normal c'est à dire Y-m-d H:i:s
              $stmt = $pdo->prepare("SELECT * FROM tb_utilisateurs as u WHERE u.date_naissance LIKE :like");
              
              $success = $stmt->execute([':like'=>$like]);
              
              $utilisateurs = $success ? $stmt->fetchAll() : [];
              
              foreach ($utilisateurs as $utilisateur) {
              
              
                  // envoi du mail
              
              }
              • Partager sur Facebook
              • Partager sur Twitter
              READ THE DOCS !

              Récupérer enregistrements 7 jours avant date anniv

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown