Partage
  • Partager sur Facebook
  • Partager sur Twitter

envoyer un mail php apres une requete sql

    25 novembre 2021 à 8:49:23

    Bonjour,

    à ce jour j'arrive a envoyé un mail, j'arrive a faire des requêtes sql les afficher faire des conditions avec MAIS comment est ce que je peux envoyer le résultat d'une requête sql par email?
    j'ai compris le principe il faut stocker la requête dans une variable puis on envoie MAIS encore une fois je n'ai pas du tout la syntaxe et je ne trouve pas de la documentation RECENTE.
    Tout ce que je trouve date de 2010 
    donc si quelqu'un peut m'orienter vers une documentation récente ou m'envoyer un exemple de code.
    je vous aime.
    merci.

    -
    Edité par lucas615515 25 novembre 2021 à 8:49:44

    • Partager sur Facebook
    • Partager sur Twitter
      25 novembre 2021 à 11:59:58

      La méthode pour traiter le résultat d'une requête n'a pas changé depuis 2010. Si tu as un cours de cette époque, tu peux te baser dessus.

      Pars sécurité, on utilise beaucoup plus de requêtes préparées, mais ça ne change rien aux principes.

      Si tu proposais déjà un début de code, on pourrait t'aider à le compléter.

      Cordialement.

      • Partager sur Facebook
      • Partager sur Twitter
        25 novembre 2021 à 15:49:49

        Domi65 a écrit:

        La méthode pour traiter le résultat d'une requête n'a pas changé depuis 2010. Si tu as un cours de cette époque, tu peux te baser dessus.

        Pars sécurité, on utilise beaucoup plus de requêtes préparées, mais ça ne change rien aux principes.

        Si tu proposais déjà un début de code, on pourrait t'aider à le compléter.

        Cordialement.


        si on utilise plus fetch assoc, mysqli ...

        <?php
         
         try 
         {
         // connexion bdd + catch erreur
         $bdd = new PDO('mysql:host=localhost;dbname=utilisateur;charset=utf8', 'root', '',array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
         }
         catch(PDOException $e)
         {
         die('Erreur : '.$e->getMessage());
         }
         
        $req = "SELECT * FROM uti";
        $sth = $bdd->prepare($req);
        $sth->execute();
        $results = $sth->fetchAll(PDO::FETCH_OBJ);
        $to = "monmail@gmail.com";
        $subject = "Résultats de la requête";
        $message = [
         'Requête : ' . $req,
         'Résultats : ',
         print_r($results, true),
        ];
        mail($to, $subject, implode(PHP_EOL, $message));
        ca cest mon bout de code mais ca ne fonctionne pas et l'erreur c'est ca Warning: mail(): Failed to connect to mailserver at &quot;localhost&quot; port 25, verify your &quot;SMTP&quot; and &quot;smtp_port&quot; setting in php.ini or use ini_set() in C:\wamp64\www\test\eamillll.php on line 24

        -
        Edité par lucas615515 25 novembre 2021 à 15:50:27

        • Partager sur Facebook
        • Partager sur Twitter
          25 novembre 2021 à 19:00:55

          Ok problème courant quand on travaille en local :

          PHP ne peut pas se connecter au serveur SMTP de ton FAI

          Pour moi qui suis chez orange, j'ai résolu le problème comme suit (je ne sais pas si ça marche pour tous les FAI) :

          Avant d'envoyer le mail j'ai ajouté ces instructions qui obligent à passer par le port 25 :

          ini_set('SMTP', 'SmtpDeMonFournisseur'); // en l'occurrence smtp.orange.fr
          ini_set('smtp_port', 25);
          ini_set('smtp_ssl', 'auto');
          ini_set('sendmail_from', 'MonEmail');

          Cordialement.

          -
          Edité par Domi65 25 novembre 2021 à 19:03:03

          • Partager sur Facebook
          • Partager sur Twitter
            27 novembre 2021 à 14:13:24

            test

            -
            Edité par AtasAli 27 novembre 2021 à 14:14:50

            • Partager sur Facebook
            • Partager sur Twitter
              27 novembre 2021 à 14:54:02

              bon voila j'ai décidé de passer pas PHP mailer finalement et faire une combi entre le bout de code que tu m'as envoyer et ce que j'ai compris.
              (message d'erreur est commenté en bas ).

              pourquoi est ce qu'il dit que le message est vide alors que je lui mets ma requête est ce que je m'y prends mal ? ou ce n'est pas possible du coup faudra faire une requête pour qui créer un fichier avec ma requête ( into outfile 'tmp/test.txt') et envoyer ce fichier en attaché 

              <?php 
              use PHPMailer\PHPMailer\PHPMailer;
              use PHPMailer\PHPMailer\SMTP;
              use PHPMailer\PHPMailer\Exception;
               
              require 'includes/Exception.php';
              require 'includes/SMTP.php';
              require 'includes/PHPMailer.php';
               
              $mail = new PHPMailer(true);
               
               
              try 
              {
                  $bdd = new PDO('mysql:host=localhost;dbname=utilisateur;charset=utf8', 'root', '',array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
              }
              catch(PDOException $e)
              {
                  die('Erreur : '.$e->getMessage());
              }
              $req = "SELECT * FROM uti";
              $sth = $bdd->prepare($req);
              $sth->execute();
              $results = $sth->fetchAll(PDO::FETCH_OBJ);
               
              $mail->isSMTP();
              $mail->Host = 'smtp.gmail.com';
              $mail->SMTPAuth = "true";
              $mail->SMTPSecure = "tls";
              $mail->Port = "587";
              $mail->username = "test@gmail.com";
              $mail->password = "codemail";
              $mail->Subject = 'Here is the subject';
              $mail->setFrom("addresse@gmail.com");
              $mail->body = [
                  'Requête : ' . $req,
                  'Résultats : ',
                  print_r($results, true),];
               
               
                  $mail->addAddress("addresse@gmail.com");
                  if ($mail->send()){
                      echo "Mail parti";
                  }else {
                      echo"errur";
                  }
                  $mail->smtpClose();
               
               
              // PHPMailer\PHPMailer\Exception: Message body empty in C:\wamp64\www\test\includes\PHPMailer.php on line 1579
              ?>



              -
              Edité par lucas615515 27 novembre 2021 à 14:54:43

              • Partager sur Facebook
              • Partager sur Twitter
                27 novembre 2021 à 15:28:58

                Si je ne m'abuse, $mail.body devrait recevoir une chaîne de caractères et non un tableau. De plus, dans ce tableau, il y a une instruction. Comment veux-tu que ça se retrouve dans le body ?
                • Partager sur Facebook
                • Partager sur Twitter
                  28 novembre 2021 à 8:55:03

                  Domi65 a écrit:

                  Si je ne m'abuse, $mail.body devrait recevoir une chaîne de caractères et non un tableau. De plus, dans ce tableau, il y a une instruction. Comment veux-tu que ça se retrouve dans le body ?


                  tu m'aides pas du tout, donc cest impossible d'envoyer tu dis ?
                  • Partager sur Facebook
                  • Partager sur Twitter
                    28 novembre 2021 à 14:34:56

                    « tu m'aides pas du tout, donc cest impossible d'envoyer tu dis ?»

                    je n'ai pas dit que c'était impossible d'envoyer, j'ai dit que la valeur de la propriété body doit être une chaîne de caractères. Et j'avoue même que moi non plus je ne comprends pas pourquoi tu assigne un tableau à cette propriété. Ne voudrais-tu pas plutôt concaténer les éléments du tableau ?

                    Dans ce cas, ctu fais simplement :

                    $mail->body = 
                      "Requête : $req /n 
                      Résultats : $results";



                    • Partager sur Facebook
                    • Partager sur Twitter

                    envoyer un mail php apres une requete sql

                    × 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