Maison > développement back-end > tutoriel php > Construisez un système de newsletter avec PHP et MySQL

Construisez un système de newsletter avec PHP et MySQL

Joseph Gordon-Levitt
Libérer: 2025-02-26 11:26:09
original
516 Les gens l'ont consulté

Aujourd'hui, nous allons construire un système de newsletter à l'aide de PHP avec une base de données MySQL. Le tutoriel couvrira la construction d'un système qui permet plusieurs listes de newsletter et l'envoi de messages à des listes spécifiques.

Nous allons construire un système de newsletter assez complexe, alors commençons! Vous allez avoir besoin de deux ressources pour le projet:

  • La bibliothèque de sets d'icônes de soie sera utilisée pour ajouter un flair visuel à l'application.
  • La bibliothèque Symfony Php Mailer sera Utilisé pour envoyer des e-mails.

Créer le squelette d'application

Tout d'abord, jetons un aperçu du répertoire de projet global Structure.

Allez-y et créez un répertoire de projet principal en premier lieu. Ensuite, créez un dossier nommé admin dans votre dossier de projet. En déplaçant plus loin, dans le dossier admin , incluez deux sous-répertoires nommés Media et swift . De plus, créez un nouveau dossier nommé images dans le répertoire media . Il est recommandé de positionner le dossier swift lib dans le dossier swift précédemment créé. De plus, assurez-vous de copier l'ensemble de six icônes de soie que nous serons Utilisation.

  • Bullet_Green.png
  • Bullet_red.png
  • Delete.png
  • email_go.png
  • find.png
  • page_edit.png

pour Le reste du tutoriel, nous développerons principalement des fonctionnalités crud (créer, lire, mettre à jour et supprimer).

Configuration de l'application

Pour gérer facilement la configuration de l'application tout au long du code PHP, allons-y Créez un fichier de configuration global, qui définit les constantes qui peuvent être utilisées dans l'application. Nous le nommerons admin / config.php .

<?php <br>session_start(); <br>require_once 'database.php';<br><br>$mini = false;<br>$nonav = false;<br><br>error_reporting(0);<br><br>define('DB_SERVER', 'localhost');<br>define('DB_USER', 'root');<br>define('DB_PASSWORD', ''); <br>define('DB_NAME', 'tutsplus_ns_demo');<br>define('FROM_EMAIL', 'no_reply@ohyeahemail.com');<br>define('FROM_NAME', 'oh yeah email!');<br><br>$db = new Database(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME);<br>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Comme vous pouvez le voir, nous avons défini les constantes liées aux paramètres de la base de données et à la configuration des e-mails. Assurez-vous de modifier les paramètres ci-dessus selon votre environnement. C'est donc pour créer le fichier de configuration global. Nous avons également inclus le fichier de classe de base de données, que nous implémenterons dans un instant.

La classe de base de données

Dans cette section, nous implémenterons la méthode __Construct , nous créons une $ db_server , $ db_password et valideUser handicaps de méthode Authentification utilisateur. Il prend un nom d'utilisateur et un mot de passe sous forme de paramètres et appelle le vrai ; Sinon, il renvoie la méthode LoggEdIn vérifie si un utilisateur est connecté en vérifiant la méthode True si l'utilisateur est connecté et requête exécute la requête SQL fournie dans le premier argument. Il prépare la requête et l'exécute. Ensuite, il récupère les métadonnées du résultat, lie le résultat aux variables, récupére les résultats et renvoie un tableau contenant les données récupérées. La méthode UpdateQuery et CountQuery exécutent une requête SQL, qui renvoie un seul résultat, comme un décompte.

La tête , la demande post et si elle inclut les deux un nom d'utilisateur et un mot de passe. Dans ce cas, nous appelons la classe de base de données . Par la suite, nous avons attribué les erreurs de session au tableau Users , dont nous aurons besoin dans notre base de données pour le système de gestion des utilisateurs.

<?php <br>session_start(); <br>require_once 'database.php';<br><br>$mini = false;<br>$nonav = false;<br><br>error_reporting(0);<br><br>define('DB_SERVER', 'localhost');<br>define('DB_USER', 'root');<br>define('DB_PASSWORD', ''); <br>define('DB_NAME', 'tutsplus_ns_demo');<br>define('FROM_EMAIL', 'no_reply@ohyeahemail.com');<br>define('FROM_NAME', 'oh yeah email!');<br><br>$db = new Database(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME);<br>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Les newsletters

dans notre application , les utilisateurs devraient être autorisés à ajouter autant de newsletters qu'ils le souhaitent. Dans ce cas, nous devons créer le tableau des newsletters en place, nous allons implémenter différentes pages pour la gestion des newsletter.

Les newsletters Listing page

allez de l'avant et créez le admin / newsletters.php Fichier, comme indiqué dans l'extrait suivant.

CREATE TABLE `users` ( <br>   `id` int(10) AUTO_INCREMENT, <br>   `username` varchar(50), <br>   `password` varchar(32), <br>   PRIMARY KEY (`id`) <br>) ENGINE=MyISAM DEFAULT CHARSET utf8; <br><br><br>INSERT INTO `users` (`id`, `username`, `password`) VALUES  ('1', 'admin', '5ebe2294ecd0e0f08eab7690d2a6ee69');<br>
Copier après la connexion
Copier après la connexion
Copier après la connexion

Tout d'abord, il vérifie si l'utilisateur est connecté en appelant le Classe de base de données . Si l'utilisateur n'est pas connecté, il redirige l'utilisateur vers la page login.php .

Ensuite, il récupère la liste des newsletters de la base de données à l'aide de la classe de base de données . Il sélectionne tous les enregistrements dans la colonne ID dans l'ordre ascendant.

Enfin, nous allons parcourir les enregistrements de newsletter et construire une liste de table HTML, et incluons le fichier Layout.php Affichez la liste des newsletter.

avec quelques enregistrements déjà dans la méthode INSERTQUERY de la $ _Post ['name'] et NEWSLETTERS Tableau dans la base de données. Enfin, il redirige l'utilisateur vers la page newsletters.php .

Le formulaire devrait ressembler à ceci.

Construisez un système de newsletter avec PHP et MySQL

Modifier une newsletter

Créons le fichier admin / newsletters_edit.php , qui permet aux utilisateurs de modifier les newsletters existants.

<?php <br>require_once 'config.php'; <br><br>$response = $db->loginRequired();<br>if (!$response) {<br>    header('Location: login.php');<br>    exit;<br>}<br>$title = "Newsletters"; <br>$newsletters = $db->query("SELECT * FROM newsletters ORDER BY id ASC");<br><br>$tab = 'nl'; <br>$table = ""; <br><br>foreach($newsletters as $row) {<br>    $dlink = '<a href="newsletters_Construisez%20un%20syst%C3%A8me%20de%20newsletter%20avec%20PHP%20et%20MySQL.php?id='.%24row%5B'id'%5D.'" onclick="return confirm(\'Are you sure you want to Construisez un système de newsletter avec PHP et MySQL this newsletter?\');" title="Construisez un système de newsletter avec PHP et MySQL"><img src="/static/imghw/default1.png" data-src="media/images/page_edit.png" class="lazy" alt="Construisez un système de newsletter avec PHP et MySQL"></a>';<br>    $elink = '<a href="newsletters_edit.php?id='.%24row%5B'id'%5D.'" title="edit"><img src="/static/imghw/default1.png" data-src="media/images/page_edit.png" class="lazy" alt="edit"></a>';<br>    if($row['visible'] == "1") {<br>        $visible = '<img  src="/static/imghw/default1.png" data-src="media/images/bullet_green.png" class="lazy" alt="Construisez un système de newsletter avec PHP et MySQL" >';} else {$visible = '<img  src="/static/imghw/default1.png" data-src="media/images/bullet_red.png" class="lazy" alt="Construisez un système de newsletter avec PHP et MySQL" >';<br>    }<br>    $table .= "<tr>
<td>".$row['id']."</td>
<td>".$row['name']."</td>
<td>".$row['description']."</td>
<td>$visible</td>
<td>".$dlink." ".$elink."</td>
</tr>\n";<br>} <br><br>$message = $db->errorMessages();<br>$content = '';<br>$content .= '<a href="newsletters_new.php">Add New Newsletter »</a> ';<br>$content .= $message;<br>$content .= '
Copier après la connexion
Copier après la connexion
Copier après la connexion







';
$content .= $table;
$content .= '
name description visible
';

include 'layout.php';
?>

Globalement, dans l'ensemble, Il est responsable de l'affichage d'un formulaire pour modifier une newsletter existante. Lorsqu'il est soumis, il met à jour l'enregistrement correspondant dans la base de données et redirige l'utilisateur vers la page appropriée en fonction du résultat.

Le formulaire d'édition ressemble à ceci.

Construisez un système de newsletter avec PHP et MySQL Construisez un système de newsletter avec PHP et MySQL

Supprimer une newsletter

Allez-y et créez le fichier admin / newsletters_Construisez un système de newsletter avec PHP et MySQL.php , qui permet aux utilisateurs de supprimer une newsletter existante.

<?php <br>session_start(); <br>require_once 'database.php';<br><br>$mini = false;<br>$nonav = false;<br><br>error_reporting(0);<br><br>define('DB_SERVER', 'localhost');<br>define('DB_USER', 'root');<br>define('DB_PASSWORD', ''); <br>define('DB_NAME', 'tutsplus_ns_demo');<br>define('FROM_EMAIL', 'no_reply@ohyeahemail.com');<br>define('FROM_NAME', 'oh yeah email!');<br><br>$db = new Database(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME);<br>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Modèles

Notre application prend également en charge la gestion des modèles de newsletter. Nous devons donc construire le crud de la même manière que nous venons de le construire pour l'entité des newsletters. Comme il est assez similaire, je vais le passer rapidement en fournissant le code.

Créons le tableau des abonnés comme indiqué dans l'extrait suivant.

CREATE TABLE `users` ( <br>   `id` int(10) AUTO_INCREMENT, <br>   `username` varchar(50), <br>   `password` varchar(32), <br>   PRIMARY KEY (`id`) <br>) ENGINE=MyISAM DEFAULT CHARSET utf8; <br><br><br>INSERT INTO `users` (`id`, `username`, `password`) VALUES  ('1', 'admin', '5ebe2294ecd0e0f08eab7690d2a6ee69');<br>
Copier après la connexion
Copier après la connexion
Copier après la connexion

De même, allons-y, allons-y, allons. Créez le tableau des abonnés . Ensuite, nous créerons ou supprimerons l'enregistrement d'abonnement dans la table des messages avec ce SQL.

<?php <br>require_once 'config.php'; <br><br>$response = $db->loginRequired();<br>if (!$response) {<br>    header('Location: login.php');<br>    exit;<br>}<br>$title = "Newsletters"; <br>$newsletters = $db->query("SELECT * FROM newsletters ORDER BY id ASC");<br><br>$tab = 'nl'; <br>$table = ""; <br><br>foreach($newsletters as $row) {<br>    $dlink = '<a href="newsletters_Construisez%20un%20syst%C3%A8me%20de%20newsletter%20avec%20PHP%20et%20MySQL.php?id='.%24row%5B'id'%5D.'" onclick="return confirm(\'Are you sure you want to Construisez un système de newsletter avec PHP et MySQL this newsletter?\');" title="Construisez un système de newsletter avec PHP et MySQL"><img src="/static/imghw/default1.png" data-src="media/images/page_edit.png" class="lazy" alt="Construisez un système de newsletter avec PHP et MySQL"></a>';<br>    $elink = '<a href="newsletters_edit.php?id='.%24row%5B'id'%5D.'" title="edit"><img src="/static/imghw/default1.png" data-src="media/images/page_edit.png" class="lazy" alt="edit"></a>';<br>    if($row['visible'] == "1") {<br>        $visible = '<img  src="/static/imghw/default1.png" data-src="media/images/bullet_green.png" class="lazy" alt="Construisez un système de newsletter avec PHP et MySQL" >';} else {$visible = '<img  src="/static/imghw/default1.png" data-src="media/images/bullet_red.png" class="lazy" alt="Construisez un système de newsletter avec PHP et MySQL" >';<br>    }<br>    $table .= "<tr>
<td>".$row['id']."</td>
<td>".$row['name']."</td>
<td>".$row['description']."</td>
<td>$visible</td>
<td>".$dlink." ".$elink."</td>
</tr>\n";<br>} <br><br>$message = $db->errorMessages();<br>$content = '';<br>$content .= '<a href="newsletters_new.php">Add New Newsletter »</a> ';<br>$content .= $message;<br>$content .= '
Copier après la connexion
Copier après la connexion
Copier après la connexion







';
$content .= $table;
$content .= '
name description visible
';

include 'layout.php';
?>

Liste des messages

allez de l'avant et créez le admin / Fichier messages.php comme indiqué dans l'extrait suivant.

<?php <br>require_once 'config.php'; <br><br>$response = $db->loginRequired();<br>if (!$response) {<br>    header('Location: login.php');<br>    exit;<br>}<br><br>$tab = 'nl';<br><br>if(isset($_POST['submitted'])) { <br>    if(isset($_POST['visible'])) {$visible = 1;}else{$visible = 0;}<br>    $data = array('name'=>$_POST['name'],'description'=>$_POST['description'], 'visible'=>$visible);<br>    $db->updateQuery($data, $_POST['id'], 'newsletters');<br>    $_SESSION['success'] = "Updated newsletter.";<br>    header('Location: newsletters.php');<br>    exit;<br>} <br><br>$title = "Edit newsletter";<br>$id = (int) $_GET['id'];<br><br>$results = $db->query("SELECT * FROM newsletters WHERE id='".$id."' LIMIT 1");<br>$name = $results[0]['name'];<br>$description = $results[0]['description'];<br>$visible = ($results[0]['visible'] == "1") ? 'checked="checked"' : '';<br><br>$content = '
Copier après la connexion






















';

include 'layout.php';
?>

Il s'agit d'une page de liste avec quelques liens supplémentaires pour différentes opérations. Votre page devrait ressembler à ceci:

Construisez un système de newsletter avec PHP et MySQL

Maintenant, nous allons commencer à travailler sur nos nouvelles pages.

Sur la première page, nous collecterons le sujet et le modèle Informations, puis sur la page suivante, nous collecterons le message réel.

Créer le fichier admin / messages_new.php avec le contenu suivant.

<?php <br>require_once 'config.php'; <br><br>$response = $db->loginRequired();<br>if (!$response) {<br>    header('Location: login.php');<br>    exit;<br>}<br><br>$id = (int) $_GET['id'];  <br>$stmt = $db->Construisez un système de newsletter avec PHP et MySQLQuery($id);<br>$_SESSION['success'] = "Newsletter Construisez un système de newsletter avec PHP et MySQLd."; <br><br>header('Location: newsletters.php');<br>?><br>
Copier après la connexion

La page est très similaire aux autres nouvelles pages, mais il y a un ajout mineur. Juste après avoir créé une nouvelle entrée de message, nous trouvons l'ID d'insert le plus récent.

La page ressemble à ceci:

Construisez un système de newsletter avec PHP et MySQL

Ensuite, nous redirigeons l'utilisateur à l'étape deux. Créons le fichier admin / messages_new_step2.php avec le contenu suivant.

CREATE TABLE `subscribers` ( <br>    `id` tinyint(10) AUTO_INCREMENT, <br>    `name` varchar(50), <br>    `email` varchar(50), <br>    PRIMARY KEY (`id`) <br>) ENGINE=MyISAM DEFAULT CHARSET utf8;<br>
Copier après la connexion

Tout d'abord, nous trouvons le message avec lequel nous travaillons, puis nous trouvons tous les modèles et construisons un menu déroulant. Ensuite, nous avons notre tableau des abonnés en premier lieu. Ensuite, pour chaque newsletter sélectionné, nous créons une entrée dans le tableau abonnements <code>subscriptions

Construisez un système de newsletter avec PHP et MySQL Il est utilisé pour permettre aux utilisateurs d'enregistrer leurs préférences de newsletter.

Tout d'abord, lorsque le formulaire se charge, il ressemble à this.

CREATE TABLE `messages` ( <br>   `id` tinyint(10) AUTO_INCREMENT, <br>   `subject` varchar(255), <br>   `leftcol` text, <br>   `rightcol` text, <br>   `template_id` tinyint(10), <br>   PRIMARY KEY (`id`) <br>) ENGINE=MyISAM DEFAULT CHARSET utf8;<br>
Copier après la connexion
Lorsque vous cliquez sur le bouton

Rechercher

, il amène l'utilisateur à la page suivante.

Construisez un système de newsletter avec PHP et MySQL Enfin, une fois qu'un utilisateur clique sur Le bouton

Enregistrer mes préférences , il affiche la page illustrée dans l'image suivante. Construisez un système de newsletter avec PHP et MySQL

Envoi des messages

Dans cette section, nous créerons la dernière page, qui nous permet d'envoyer des messages.

Créons le admin / messages_send.php Fichier comme indiqué dans l'extrait suivant.

<?php <br>session_start(); <br>require_once 'database.php';<br><br>$mini = false;<br>$nonav = false;<br><br>error_reporting(0);<br><br>define('DB_SERVER', 'localhost');<br>define('DB_USER', 'root');<br>define('DB_PASSWORD', ''); <br>define('DB_NAME', 'tutsplus_ns_demo');<br>define('FROM_EMAIL', 'no_reply@ohyeahemail.com');<br>define('FROM_NAME', 'oh yeah email!');<br><br>$db = new Database(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME);<br>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Il est utilisé pour construire le formulaire, qui répertorie les newsletters en premier lieu. Lorsqu'un administrateur sélectionne les newsletters et soumet le formulaire, nous récupérons les abonnés abonnés à ces newsletters sélectionnés. Et enfin, nous leur envoyons un e-mail.

Il est également important de noter que j'ai utilisé la bibliothèque Symfony Mailer pour envoyer des e-mails. Vous pouvez l'installer avec Composer comme indiqué dans l'extrait suivant. Vous devez ajuster les paramètres selon votre environnement. Pour en savoir plus sur ce sujet, vous pouvez visiter cet article, qui fournit un guide approfondi de la bibliothèque Symfony Mailer.

CREATE TABLE `users` ( <br>   `id` int(10) AUTO_INCREMENT, <br>   `username` varchar(50), <br>   `password` varchar(32), <br>   PRIMARY KEY (`id`) <br>) ENGINE=MyISAM DEFAULT CHARSET utf8; <br><br><br>INSERT INTO `users` (`id`, `username`, `password`) VALUES  ('1', 'admin', '5ebe2294ecd0e0f08eab7690d2a6ee69');<br>
Copier après la connexion
Copier après la connexion
Copier après la connexion

Le formulaire ressemble à ceci:

Construisez un système de newsletter avec PHP et MySQL

La page d'accueil

Maintenant, créons la page d'accueil de l'administrateur, qui affiche des statistiques globales pour notre application.

Créons le admin / index.php Fichier avec le contenu suivant.

<?php <br>require_once 'config.php'; <br><br>$response = $db->loginRequired();<br>if (!$response) {<br>    header('Location: login.php');<br>    exit;<br>}<br>$title = "Newsletters"; <br>$newsletters = $db->query("SELECT * FROM newsletters ORDER BY id ASC");<br><br>$tab = 'nl'; <br>$table = ""; <br><br>foreach($newsletters as $row) {<br>    $dlink = '<a href="newsletters_Construisez%20un%20syst%C3%A8me%20de%20newsletter%20avec%20PHP%20et%20MySQL.php?id='.%24row%5B'id'%5D.'" onclick="return confirm(\'Are you sure you want to Construisez un système de newsletter avec PHP et MySQL this newsletter?\');" title="Construisez un système de newsletter avec PHP et MySQL"><img src="/static/imghw/default1.png" data-src="media/images/page_edit.png" class="lazy" alt="Construisez un système de newsletter avec PHP et MySQL"></a>';<br>    $elink = '<a href="newsletters_edit.php?id='.%24row%5B'id'%5D.'" title="edit"><img src="/static/imghw/default1.png" data-src="media/images/page_edit.png" class="lazy" alt="edit"></a>';<br>    if($row['visible'] == "1") {<br>        $visible = '<img  src="/static/imghw/default1.png" data-src="media/images/bullet_green.png" class="lazy" alt="Construisez un système de newsletter avec PHP et MySQL" >';} else {$visible = '<img  src="/static/imghw/default1.png" data-src="media/images/bullet_red.png" class="lazy" alt="Construisez un système de newsletter avec PHP et MySQL" >';<br>    }<br>    $table .= "<tr>
<td>".$row['id']."</td>
<td>".$row['name']."</td>
<td>".$row['description']."</td>
<td>$visible</td>
<td>".$dlink." ".$elink."</td>
</tr>\n";<br>} <br><br>$message = $db->errorMessages();<br>$content = '';<br>$content .= '<a href="newsletters_new.php">Add New Newsletter »</a> ';<br>$content .= $message;<br>$content .= '
Copier après la connexion
Copier après la connexion
Copier après la connexion







';
$content .= $table;
$content .= '
name description visible
';

include 'layout.php';
?>

Et il ressemble à ceci:

Construisez un système de newsletter avec PHP et MySQL

Conclusion

et avec Cela, nous avons également atteint la fin de cet article. Nous avons couvert beaucoup de terrain dans le tutoriel, créant une application de newsletter complètement à partir de zéro!

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal