本文件總結了先前檔案中所學的步驟,說明如何從現有的 Member News 管理功能延伸出新的 Q&A 區塊。內容包括資料庫設計、PHP 檔案結構、 後台與前台的互動流程,以及程式設計邏輯。您可以依照此指南自力完成 Q&A 模組的製作。
http://localhost/phpmyadmin,建立名稱為 feva 的資料庫,
編碼選擇 utf8_general_ci。db.sql 匯入 feva,此檔案內含預設的
admin 管理者帳戶以及 member_news、faq 等資料表結構。cms 資料夾放入 XAMPP/htdocs 目錄下。
後台路徑為 http://localhost/cms/cms/,前台首頁路徑為 http://localhost/cms/index.php。Member News 模組提供新增、編輯及刪除新聞的功能。以下說明其核心邏輯,這些技巧可直接套用到 Q&A 模組上。
include("inc_function.php") 載入共用的函式,並呼叫 check_login() 確保已登入。connect_db() 建立 MySQL 連線。member_news 資料表所有資料,以迴圈輸出在 HTML 表格中。
每筆資料後提供「Edit」及「Delete」連結,並傳入該筆資料的 id。member_news_add.php。member_news_add.php 顯示表單,欄位包含標題 (topic)、內文 (content)、圖片 (pic) 以及日期 (date)。enctype="multipart/form-data" 以支援檔案上傳。member_news_add_submit.php 先呼叫 connect_db(),再取得表單資料。
文字欄位透過 urlencode() 進行編碼,避免特殊字元造成錯誤。
move_uploaded_file() 將圖片移到指定資料夾並組成檔名,最後執行 INSERT 語法寫入資料表。member_news_edit.php 根據 id 讀取單一資料,於表單中顯示現有內容。member_news_edit_submit.php 判斷是否上傳新圖片:若有,檢查副檔名並覆蓋 $pic 變數;若無,沿用原圖。以下步驟說明如何從零開始設置 Q&A 管理功能,並在前台顯示問答。
在 feva 資料庫中建立 faq 表格,欄位如下:
CREATE TABLE `faq` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`question` TEXT NOT NULL,
`answer` TEXT NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
可先插入幾筆預設資料,並記得使用 urlencode() 轉換中文。
cms/cms 目錄建立以下檔案:faq.php:列表頁,從 faq 資料表讀取所有問答並顯示在表格中,提供「Edit」與「Delete」連結。faq_add.php:新增表單頁,欄位只有 question 與 answer。faq_add_submit.php:處理新增表單,對文字欄位使用 urlencode() 再寫入資料庫。faq_edit.php:編輯表單頁,依據 id 填入現有的 question 與 answer。faq_edit_submit.php:處理編輯表單,更新指定 id 的資料。faq_delete.php:刪除指定 id 的資料。include("inc_function.php") 並呼叫 check_login() 與 connect_db(),確保連線與權限。編輯 inc_header.php,在導航列加入通往 Q&A 列表的新連結:
<nav>
<a href="index.php">Home</a>
<a href="member_news.php">Member News</a>
<a href="faq.php">Q&A</a>
<a href="logout.php">Logout</a>
</nav>
index.php,找到原本硬編碼的常見問題區塊。cms/inc_function.php 並呼叫 connect_db()。SELECT * FROM faq,以迴圈生成每一筆問答:<?php
include_once "cms/inc_function.php";
connect_db();
$sql = "SELECT * FROM faq";
$rs = mysqli_query($connect, $sql);
while ($row = mysqli_fetch_array($rs)) {
?>
<li>
<div class="q"><?= urldecode($row["question"]) ?></div>
<div class="a"><?= urldecode($row["answer"]) ?></div>
</li>
<?php
}
?>
http://localhost/cms/cms/login.php 進入後台,以預設帳號密碼 admin/admin 登入。urlencode() 編碼,取出時再用 urldecode() 解碼,確保特殊字元不會影響 SQL 執行。依循以上步驟,您即可成功建立一個可在後台管理的 Q&A 功能,並在前台動態顯示問答內容。