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:
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.
pour Le reste du tutoriel, nous développerons principalement des fonctionnalités crud (créer, lire, mettre à jour et supprimer).
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>
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.
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>
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.
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>
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.
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 .= '
name | description | visible |
---|
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.
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>
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>
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 .= '
name | description | visible |
---|
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 = '
Il s'agit d'une page de liste avec quelques liens supplémentaires pour différentes opérations. Votre page devrait ressembler à ceci:
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>
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:
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>
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
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>
Rechercher
, il amène l'utilisateur à la page suivante.
Enregistrer mes préférences , il affiche la page illustrée dans l'image suivante.
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>
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>
Le formulaire ressemble à ceci:
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 .= '
name | description | visible |
---|
Et il ressemble à ceci:
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!