從零打造 PHP 新聞發佈系統:資料庫設計、核心函數與顯示邏輯
第一步:建立資料表
CREATE TABLE news (
n_id INT(255) NOT NULL AUTO_INCREMENT,
n_date DATETIME NOT NULL,
news TEXT NOT NULL,
PRIMARY KEY(n_id)
);
第二步:資料庫連線設定
$database_user_name = "root";
$database_password = "";
$database_name = "news";
$time_offset = "0";
第三步:封裝常用函數
function connect_db() {
global $database_user_name, $database_password;
$db = mysql_connect("localhost", $database_user_name, $database_password);
return $db;
}
function db_name() {
global $database_name;
return $database_name;
}
function get_now() {
$db = connect_db();
$db_name = db_name();
mysql_select_db($db_name, $db);
$sql = "SELECT NOW() AS now";
$result = mysql_query($sql, $db);
$myrow = mysql_fetch_array($result);
return $myrow["now"];
}
第四步:新聞顯示邏輯
- 支援顯示全部新聞或限定筆數(
$show_news_sub)
- 日期時間格式化輸出(
DATE_FORMAT)
- 管理員模式顯示後台連結
- 分頁/「顯示全部」連結動態產生
- 新聞內容用
nl2br() 處理換行
- 省略版面標籤以利閱讀核心邏輯
核心查詢程式碼片段
$db = connect_db();
$db_name = db_name();
mysql_select_db($db_name, $db);
if ($show_news_sub) $show_news = $show_news_sub;
if (!ereg("([0-9]{".strlen($show_news)."})", $show_news)) $show_news = "ALL";
if (strtoupper($show_news) == "ALL") {
$sql = "SELECT DATE_FORMAT(n_date,'%m/%d/%Y') AS n_date,
DATE_FORMAT(n_date,'%H:%i') AS n_time,
news, n_date AS date
FROM news ORDER BY date DESC";
} else {
$link = "<a href=...>All news</a>";
$sql = "SELECT ... FROM news ORDER BY n_date DESC LIMIT $show_news";
}
$result = mysql_query($sql, $db);
$num_rows = mysql_num_rows($result);
if($num_rows != 0) {
while($myrow = mysql_fetch_array($result)) {
$date = $myrow["n_date"];
$time = $myrow["n_time"];
$news = $myrow["news"];
$n_id = $myrow["n_id"];
// 依 $show_date, $show_time 設定顯示格式
$cleannews = nl2br($news);
// 輸出 HTML...
}
}
改進建議
- 改用 PDO 或 mysqli 取代已棄用的
mysql_* 函數。
- 使用 Prepared Statements 防止 SQL 注入。
- 採用 MVC 架構 分離邏輯與視圖。
- 加入 分頁功能、分類/標籤、搜尋、RSS 輸出。
- 實作 後台管理介面(新增、編輯、刪除、權限控制)。