首頁 > 後端開發 > php教程 > 使用PHP和MySQL構建新聞通訊系統

使用PHP和MySQL構建新聞通訊系統

Joseph Gordon-Levitt
發布: 2025-02-26 11:26:09
原創
506 人瀏覽過

今天,我們將使用MySQL數據庫的PHP構建新聞通訊系統。該教程將涵蓋構建系統,該系統允許多個新聞通訊列表,並將消息發送到特定列表。

我們將構建一個相當複雜的新聞通訊系統,所以讓我們開始啟動吧!您將需要兩個資源來進行該項目:

    >絲綢圖標集庫將用於在應用程序中添加一些視覺範圍。
  • > Symfony PHP Mailer庫將是用於發送電子郵件。
  • 創建應用程序骨架

>首先,讓我們查看整個項目目錄結構。 >

> go首先創建一個主要項目目錄。接下來,在您的項目文件夾中創建一個名為

admin

的文件夾。進一步移動,在admin文件夾中,包括兩個名為媒體 swift 的子目錄。此外,在媒體>目錄中創建一個名為images的新文件夾。建議在先前創建的Swift 文件夾中放置swift lib文件夾。此外,請確保複製我們將成為的六個絲綢圖標使用。

    bullet_green.png
  • bullet_red.png
  • 使用PHP和MySQL構建新聞通訊系統.png
  • email_go.png
  • find.png

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>
登入後複製
登入後複製
登入後複製
登入後複製
應用程序配置

> 在整個PHP代碼中輕鬆管理應用程序配置,讓我們創建一個全局配置文件,該文件定義可以在整個應用程序中使用的常數。我們將其命名為admin/config.php。 ,如您所見,我們已經定義了與數據庫設置和電子郵件配置相關的常數。確保根據環境更改上述設置。因此,創建全局配置文件就是這樣。我們還包括了數據庫類文件,我們將在稍後實施。 >

數據庫類

在本節中,我們將實現__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用戶是否已登錄數據庫

類。如果未登錄用戶,它將用戶重定向到

login.php

page。它以升序從ID

列中選擇所有記錄。 最後,我們在新聞通訊記錄上迭代並構建HTML表列表,並將 layout.php

文件包含在在$ _post ['name'']
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

文件,該文件允許用戶編輯現有新聞通訊。負責顯示一個表格以編輯現有新聞通訊。提交後,它會在數據庫中更新相應的記錄,並根據結果將用戶重定向到適當的頁面。

>>編輯表單看起來像這樣。 >使用PHP和MySQL構建新聞通訊系統 使用PHP和MySQL構建新聞通訊系統

>刪除新聞通訊

繼續創建文件,該文件允許用戶刪除現有的新聞通訊。 >

>模板
<?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。由於它非常相似,因此我將通過提供代碼來快速瀏覽它。

讓我們創建訂戶

表,如以下snippet所示。

>類似地,讓我們創建訂戶
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>
登入後複製
登入後複製
登入後複製
表。接下來,我們將使用此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_%E4%BD%BF%E7%94%A8PHP%E5%92%8CMySQL%E6%A7%8B%E5%BB%BA%E6%96%B0%E8%81%9E%E9%80%9A%E8%A8%8A%E7%B3%BB%E7%B5%B1.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 .= '
登入後複製
登入後複製







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

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和MySQL構建新聞通訊系統現在,我們將開始在新頁面上工作。信息,然後在下一頁上,我們將收集實際消息。

admin/message/messags_new.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>
登入後複製
這個頁面與其他新頁面非常相似,但是添加了較小的內容。在創建一個新的消息條目後,我們找到了最新的插入ID。

該頁面看起來像這樣:

使用PHP和MySQL構建新聞通訊系統接下來,我們將用戶重定向到第二步。讓我們創建使用以下內容的下拉式菜單。接下來,我們首先要有訂戶表。接下來,對於每個選定的新聞通訊,我們將在 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接下來,讓我們創建

preperences.php使用PHP和MySQL構建新聞通訊系統page。

>>它用於允許用戶保存其新聞通訊的首選項。

>首先,當表單加載時,它看起來像此。
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>
登入後複製

>單擊

查找

>按鈕時,它將用戶進入下一頁。 使用PHP和MySQL構建新聞通訊系統

>

>使用PHP和MySQL構建新聞通訊系統>

保存我的首選項>按鈕,它顯示了下圖中顯示的頁面。

在本節中,我們將構建最後一頁,這允許我們發送消息。 使用PHP和MySQL構建新聞通訊系統

,讓我們創建

如下圖中所示,

>文件。

>它用於構建表單,該表單首先列出了新聞通訊。當管理員選擇新聞通訊並提交表格時,我們將檢索訂閱這些選定新聞通訊的訂閱者。最後,我們向他們發送了一封電子郵件。

也必須注意,我使用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和MySQL構建新聞通訊系統file具有以下內容。

>

,看起來像這樣:

<?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%A7%8B%E5%BB%BA%E6%96%B0%E8%81%9E%E9%80%9A%E8%A8%8A%E7%B3%BB%E7%B5%B1.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 .= '
登入後複製
登入後複製







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

include 'layout.php';
?>

那,我們也達到了本文的結尾。我們在教程中介紹了很多基礎,從頭開始創建了一個新聞通訊應用! 使用PHP和MySQL構建新聞通訊系統>

以上是使用PHP和MySQL構建新聞通訊系統的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板