今天,我们将使用MySQL数据库的PHP构建新闻通讯系统。该教程将涵盖构建系统,该系统允许多个新闻通讯列表,并将消息发送到特定列表。
我们将构建一个相当复杂的新闻通讯系统,所以让我们开始启动吧!您将需要两个资源来进行该项目:
> go首先创建一个主要项目目录。接下来,在您的项目文件夹中创建一个名为
admin的文件夹。进一步移动,在admin文件夹中,包括两个名为媒体和 swift 的子目录。此外,在媒体>目录中创建一个名为images的新文件夹。建议在先前创建的Swift 文件夹中放置swift lib文件夹。此外,请确保复制我们将成为的六个丝绸图标使用。
page_edit.png
教程的其余部分,我们将主要开发CRUD功能(创建,读取,更新和删除)。
<?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>
在本节中,我们将实现__construct方法,我们正在创建$ db_server ,$ db_password 和validateuser方法处理用户身份验证。它将用户名和密码作为参数,并调用true;否则,它将返回loggedin方法检查用户是否已登录用户是否已登录,如果用户被登录并查询方法,则执行第一个参数中提供的SQL查询。它准备查询并执行它。然后,它检索结果元数据,将结果绑定到变量,获取结果并返回包含被提取数据的数组。 UpdateQuery和CountQuery方法执行SQL查询,该查询返回单个结果,例如Count。用户名和密码。在这种情况下,我们调用数据库类。随后,我们已将会话错误分配给用户
表,我们的数据库中需要用于用户管理系统。 ,应允许用户添加尽可能多的新闻通讯。在这种情况下,我们需要创建新闻通讯>表格,我们将为新闻通讯管理实施不同的页面。 新闻通讯列表page page继续并创建 admin/phessletters.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>
>首先,它通过调用调用the the the the the the the the the the the the the the the the the the the the the the the the the the the the the用户是否已登录数据库
类。如果未登录用户,它将用户重定向到列中选择所有记录。最后,我们在新闻通讯记录上迭代并构建HTML表列表,并将
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>
>数据库中的表。最后,它将用户重定向到>新闻通讯.phppage。让我们创建admin/enwesletters_edit.php
文件,该文件允许用户编辑现有新闻通讯。负责显示一个表格以编辑现有新闻通讯。提交后,它会在数据库中更新相应的记录,并根据结果将用户重定向到适当的页面。>>编辑表单看起来像这样。 继续创建 让我们创建订户 >表中创建或删除订阅记录。 文件如下图所示。 admin/message/messags_new.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>
我们的应用程序还支持新闻通讯模板管理。因此,我们需要像为新闻通讯实体建造它一样建立CRUD。由于它非常相似,因此我将通过提供代码来快速浏览它。
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>
<?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_%E4%BD%BF%E7%94%A8PHP%E5%92%8CMySQL%E6%9E%84%E5%BB%BA%E6%96%B0%E9%97%BB%E9%80%9A%E8%AE%AF%E7%B3%BB%E7%BB%9F.php?id='.%24row%5B'id'%5D.'" onclick="return confirm(\'Are you sure you want to 使用PHP和MySQL构建新闻通讯系统 this newsletter?\');" title="使用PHP和MySQL构建新闻通讯系统"><img src="/static/imghw/default1.png" data-src="media/images/使用PHP和MySQL构建新闻通讯系统.png" class="lazy" alt="使用PHP和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="使用PHP和MySQL构建新闻通讯系统" >';} else {$visible = '<img src="/static/imghw/default1.png" data-src="media/images/bullet_red.png" class="lazy" alt="使用PHP和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
$content .= $table;
$content .= '
include 'layout.php';
?>
列表消息> Message.php<?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 = '
include 'layout.php';
?>
>这是一个列表页面,其中有一些其他操作的链接。您的页面应该看起来像这样:现在,我们将开始在新页面上工作。信息,然后在下一页上,我们将收集实际消息。
<?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->使用PHP和MySQL构建新闻通讯系统Query($id);<br>$_SESSION['success'] = "Newsletter 使用PHP和MySQL构建新闻通讯系统d."; <br><br>header('Location: newsletters.php');<br>?><br>
接下来,我们将用户重定向到第二步。让我们创建使用以下内容的
subpcriptions
表中创建一个条目。
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>
subscriptions
接下来,让我们创建
>>它用于允许用户保存其新闻通讯的首选项。
>首先,当表单加载时,它看起来像此。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>
查找
>按钮时,它将用户进入下一页。>
>保存我的首选项>按钮,它显示了下图中显示的页面。
在本节中,我们将构建最后一页,这允许我们发送消息。>文件。
>它用于构建表单,该表单首先列出了新闻通讯。当管理员选择新闻通讯并提交表格时,我们将检索订阅这些选定新闻通讯的订阅者。最后,我们向他们发送了一封电子邮件。
也必须注意,我使用Symfony Mailer库发送电子邮件。您可以使用以下摘要中所示的作曲家安装。您需要根据环境调整设置。要查看有关此主题的更多信息,您可以访问本文,该文章为Symfony Mailer库提供了深入的指南。<?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>
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>
让我们创建
admin/index.php,看起来像这样:
<?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_%E4%BD%BF%E7%94%A8PHP%E5%92%8CMySQL%E6%9E%84%E5%BB%BA%E6%96%B0%E9%97%BB%E9%80%9A%E8%AE%AF%E7%B3%BB%E7%BB%9F.php?id='.%24row%5B'id'%5D.'" onclick="return confirm(\'Are you sure you want to 使用PHP和MySQL构建新闻通讯系统 this newsletter?\');" title="使用PHP和MySQL构建新闻通讯系统"><img src="/static/imghw/default1.png" data-src="media/images/使用PHP和MySQL构建新闻通讯系统.png" class="lazy" alt="使用PHP和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="使用PHP和MySQL构建新闻通讯系统" >';} else {$visible = '<img src="/static/imghw/default1.png" data-src="media/images/bullet_red.png" class="lazy" alt="使用PHP和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 |
---|
以上是使用PHP和MySQL构建新闻通讯系统的详细内容。更多信息请关注PHP中文网其他相关文章!