Partage
  • Partager sur Facebook
  • Partager sur Twitter

Message de validation formulaire

    12 janvier 2021 à 10:48:50

    Bonjour ! J'espère que vous vous portez bien. J'ai créé une sorte de newsletter qui marche comme un champs de formulaire. En gros, l'utilisateur rentre son email, appuie sur "S'inscrire", et là on m'envoie un email avec l'adresse mail de l'utilisateur qui souhaite s'inscrire à la newsletter. 

    Pour ça, j'ai 3 fichiers : 

    - Un fichier JS

    - Un fichier PHP

    - Un fichier HTML

    En fait, ce que je recherchais était que quand l'utilisateur appuie sur s'inscrire, la page ne se recharge pas, mais grâce à AJAX, tout se fait en "arrière plan". J'ai réussi, mais je cherche juste un moyen d'afficher un message de confirmation d'inscription à la newsletter grâce à une div que je place dans mon fichier HTML. 

    Voilà les codes: 

    HTML :

    <form action="news.php" class="newsletter_form" method="post" id="myForm">
                                    <input type="email" name="emaille" id="emaille" placeholder="Enter your mail">
                                    <button type="submit" name="submitte">Sign Up</button>
                                </form>

    PHP :

    <?php
    
        $to = "exemple@gmail.com";
        $from = $_REQUEST['emaille'];
    
        $headers = "From: $from";
    	$headers = "From: " . $from . "\r\n";
    	$headers .= "Reply-To: ". $from . "\r\n";
    	$headers .= "MIME-Version: 1.0\r\n";
    	$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
    
        $subject = "Nouvelle demande d'abonnement à la newsletter !";
    
        $logo = 'img/logo.png';
        $link = '#';
    
    	$body = "<!DOCTYPE html><html lang='en'><head><meta charset='UTF-8'><title>Express Mail</title></head><body>";
    	$body .= "<table style='width: 100%;'>";
    	$body .= "<thead style='text-align: center;'><tr><td style='border:none;' colspan='2'>";
    	$body .= "<a href='{$link}'><img src='{$logo}' alt=''></a><br><br>";
    	$body .= "</td></tr></thead><tbody><tr>";
    	$body .= "<td style='border:none;'><strong>Name:</strong> {$name}</td>";
    	$body .= "<td style='border:none;'><strong>Email:</strong> {$from}</td>";
    	$body .= "</tr>";
    	$body .= "<tr><td style='border:none;'><strong>Subject:</strong> {$subject}</td></tr>";
    	$body .= "<tr><td></td></tr>";
    	$body .= "<tr><td colspan='2' style='border:none;'>{$cmessage}</td></tr>";
    	$body .= "</tbody></table>";
    	$body .= "</body></html>";
    
        $send = mail($to, $subject, $body, $headers);
        echo "L'email a été envoyé.";
    ?>

    JS :

    $("#myForm").submit(function(e){
      e.preventDefault(); //empêcher une action par défaut
      var form_url = $(this).attr("action"); //récupérer l'URL du formulaire
      var form_method = $(this).attr("method"); //récupérer la méthode GET/POST du formulaire
      var form_data = $(this).serialize(); //Encoder les éléments du formulaire pour la soumission
      
      $.ajax({
        url : form_url,
        type: form_method,
        data : form_data
      }).done(function(response){ 
        $("#res").html(response);
      });
    });

    PS: Je réarrangerai le PHP pour la structure de l'email plus tard, c'est pour ça qu'il y a des éléments qui ne correspondent à rien. 

    Voilà, merci d'avance !



    • Partager sur Facebook
    • Partager sur Twitter

    Hello, World !

      13 janvier 2021 à 12:29:24

      Salut. Et le message ne s'affiche pas? Il y a bien un élément avec pour ID "res" sur ta page?
      • Partager sur Facebook
      • Partager sur Twitter
        13 janvier 2021 à 12:51:56

        Oui j'ai mis une div vide avec id "res" sur ma page html mais rien s'affiche quand j'appuie sur le bouton
        • Partager sur Facebook
        • Partager sur Twitter

        Hello, World !

          13 janvier 2021 à 15:52:17

          Commence par regarder ce qu'il y a dans la console dans l'onglet network ce qui se passe quand tu lances la page.

          $.ajax({
              url : form_url,
              type: form_method,
              data : form_data
            }).done(function(response){
              $("#res").html(response);
              console.log(response);
            });

          Et regarde ce que ça affiche dans la console.

          • Partager sur Facebook
          • Partager sur Twitter
            13 janvier 2021 à 17:07:32

            Ca me met "mail.php" en rouge

            • Partager sur Facebook
            • Partager sur Twitter

            Hello, World !

              13 janvier 2021 à 18:24:54

              Tu devrais donner plus de détails si tu veux qu'on puisse t'aider. Si c'est rouge c'est qu'il y a une erreur, tu dois cliquer sur "mail.php" et ensuite regarder l'erreur
              • Partager sur Facebook
              • Partager sur Twitter

              Message de validation formulaire

              × 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