[Mini Tuto] Création de newsletter

Ce topic a été résolu
Balatharas

Balatharas Le 18 juin 2016 à 13:01 (Édité le 25 janvier 2019 à 17:51)

Hello 😄 
Je voudrais montrer à certains comment créer un système de newsletter, pour que, à l'avenir, la question ne soit pas reposée. Ce sera un système simple sans aucune options supplémentaires. Dans le mini-tuto on va tout regrouper dans un fichier nommé news.php.
Commençons 😉:
Premièrement on va aller sur PHPMyAdmin et créer une nouvelle table dans notre base de données:

Nom de la table: newsletter
  • id INT, Auto-Increment
  • mail VARCHAR de 255 caractères (ou moins, au choix)
Ensuite on va créer  le formulaire pour que nos utilisateurs puissent s'inscrire a notre newsletter:
   <h2>S'inscrire a la newsletter</h2>
   <form method="POST" action="">
      <input type="mail" name="newsletterMail" placeholder="Votre mail" />
      <input type="submit" name="submitnews" value="Confirmer" />
   </form>
Ce code sera dans les balises <body> de notre page.
Ensuite on va mettre un peu de PHP (évidemment, puisque l'on utilise une base de données)
N'oubliez pas de mettre une ligne pour vous connectez a votre bdd ainsi qu'un session_start(); si vous utilisez un espace membre !

Cette partie de code va tout simplement servir a vérifier l'email de l'utilisateur avec un FILTER_VALIDATE_EMAIL, et inscrire cette adresse dans notre base de données, si celle-ci est valide.
if(isset($_POST['submitnews']))
{   
   if(filter_var($_POST['newsletterMail'], FILTER_VALIDATE_EMAIL))//Vérification de l'email
   {      
      $insertmail = $bdd->prepare('INSERT INTO newsletter(mail) VALUES(?)');
      $insertmail->execute(array($_POST['newslettermail']));
      $succes = "Merci pour votre inscription !";
   }
   else
   {
      $erreur = "L'adresse email n'est pas valide !";
   }
}
Une fois cela fait, on va afficher la variable $erreur ou $succes:
Ce code sera a mettre juste en dessous du formulaire:
<?php
   if(isset($erreur))//Affichage des variables d'erreurs
   {
      echo '<font color="#C22B2B">'.$erreur."</font>";
   }
   if(isset($succes))
   {
      echo $succes;
   }
}//Enlevez l'accolade si pas d'esp membre
La dernière accolade nous servira plus tard. Si vous n'avez pas d'espace membre, enlevez la.
Maintenant cela devient différent selon les personnes. Le code que je vais vous montrez sera valable pour ceux qui ont un espace membre encore une fois.
Donc son but sera d'afficher le formulaire d'inscription a notre news, mais seulement pour l'utilisateur dont nous supposons que l'id est différent de 1.
Juste au dessus du titre:
<h2>S'inscrire a la newsletter</h2>
On va placer ce code:
<?php
//Si l'administrateur est connecté alors cette partie ne s'affiche pas
if($_SESSION['id'] != 1)
{
?>
Comme vous le voyez l'accolade n'est pas fermée. Pas besoin de le faire puisque dans le code plus haut pour afficher les variables d'erreur c'est l'accolade facultative qui ferme cette condition. Donc maintenant l'administrateur ne verra pas le formulaire destiné aux utilisateurs.
Maintenant on va afficher le formulaire pour envoyer la newsletter a tout nos "abonnés". Mais ce formulaire va s'afficher seulement pour notre administrateur.
Encore une fois on va utiliser une simple condition:
//Partie qui s'affiche seulement pour l'administrateur
if($_SESSION['id'] == 1)
{
   echo $envoi_news;
}
else
{

}
?>
Cette condition sera a afficher sous l'accolade qui masque le premier formulaire, pour l'inscription.
Ce qui va donner au final:
<?php
   if(isset($erreur))
   {
      echo '<font color="#C22B2B">'.$erreur."</font>";
   }
   if(isset($succes))
   {
      echo $succes;
   }
}
//Partie qui s'affiche seulement pour l'administrateur
if($_SESSION['id'] == 1)
{
   echo $envoi_news;
}
else
{

}
?>
On va ensuite définir la variable $envoi_news qui va être le formulaire d'envoi de newsletter:
$envoi_news = "<p><h2>Envoyer une newsletter</h2><br />
            <form method=\"post\" action=\"\" name=\"newsletterSend\">
               <textarea placeholder=\"Newsletter\" name=\"newsletterMessage\"></textarea><br /><br />
               <input type=\"submit\" name=\"newsletterSend\" value=\"Envoyer\" />
            </form></p>";

Maintenant, c'est pratiquement terminé, il nous reste la partie de traitement pour l'envoi de la newsletter par mail:
if(isset($_POST['newsletterSend']))
{
   $selectmail = $bdd->prepare('SELECT mail FROM newsletter');
   $selectmail->execute();
      
   $newsletterMessage = nl2br($_POST['newsletterMessage']);
   // Envoi de l'email
   $header="MIME-Version: 1.0\r\n";
   $header.='From:"NomDeVotreSite"<email a afficher a vos internautes@mondomaine.com>'."\n";
   $header.='Content-Type:text/html; charset="utf-8"'."\n";
   $header.='Content-Transfet-Encoding: 8bit'; 
   while($affichmail = $selectmail->fetch())
   {
     mail($affichmail['mail'], "Ma newsletter !", $newsletterMessage, $header); 
   }
}
On va placer ce code où on le souhaite, il n'a pas besoin d'être dans une autre condition.
Ensuite vous allez avoir quelque trucs a modifier comme le 2ème $header qui se trouve a la ligne 9.
Dans From:"" on va mettre le pseudo/nom a afficher dans le mail (nom de l'expéditeur en gros) ensuite entre les chevrons on va mettre notre mail professionnel ou non, avec un domaine personnalisé ou non (cela peut être bonjour@mondomaine.fr comme cela peut être bonjour@gmail.com).

Voilà vous avez créer votre propre newsletter ! Maintenant vous pouvez réutiliser certaines parties du code pour créer un formulaire de contact ou autre (sinon voilà un tuto utile de @PrimFX 😋 ) !
Bien sûr je n'ai montrer aucun design ou autre pour votre newsletter. Mais vous pouvez rajouter vous-même quelque chose comme un envoi de mail aux nouveaux inscrits !
Si vous avez des questions, des idées pour améliorer le système ou que vous avez repérer certaines erreurs faites le moi savoir 😋 !

EDIT: S'il est utile a plusieurs personnes y'aurait pas possibilité d'épingler le tuto 😄 @PrimFX ?

Bonne journée 😄
Profil introuvable

Profil introuvable Le 19 juin 2016 à 03:29

Bonjour 'Beignet',

Merci du partage de ton tutoriel, cela pourra sûrement servir 😉
Balatharas

Balatharas Le 20 juin 2016 à 18:53 (Édité le 20 juin 2016 à 19:24)

@Jerem971 j'espère bien 😄 
Profil introuvable

Profil introuvable Le 22 juin 2016 à 08:09

Je ne code pas en php pour le moment mais, comme je compte m'y mettre bientôt, je retiendrais ce topic fort utile ! 😉
Balatharas

Balatharas Le 22 juin 2016 à 13:05

Héhé merci @Z_Fire 😄
jeannot_gates

jeannot_gates Le 29 juin 2016 à 12:35

merci l'ami pour ton super tuto continu ainsi 😉:D
Balatharas

Balatharas Le 30 juin 2016 à 20:41

De rien 😄 @jeannot_gates
Balatharas

Balatharas Le 13 juillet 2016 à 18:37

Petit up 😀
samgaze

samgaze Le 14 août 2016 à 17:41

Bon tuto 😀
Vous devez être connecté pour poster une réponse. Se connecter ou Créer un compte