首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

單頁多表新聞發布系統:共用顯示與發布邏輯實作

     編輯:PHP 綜合知識

設計目標

在單一首頁同時顯示多個資料表(如 news、ctm)的最新文章,並共用一套發布、檢視程式,減少重複代碼。

一、資料庫結構

CREATE TABLE news (
  id INT(8) NOT NULL AUTO_INCREMENT PRIMARY KEY,
  title CHAR(100),
  detail TEXT
);

CREATE TABLE ctm (
  id INT(8) NOT NULL AUTO_INCREMENT PRIMARY KEY,
  title CHAR(100),
  detail TEXT
);

二、共用檢視模組 index_view.php

<?php
// 接收 $name 參數決定查詢哪張表
$query = "SELECT * FROM `$name` ORDER BY id DESC LIMIT 0,5";
$result = mysql_query($query, $db);

if ($result) {
    while ($row = mysql_fetch_assoc($result)) {
        echo "<tr><td><a href='view_d.php?recod={$row['id']}&name=$name'>{$row['title']}</a></td></tr>";
    }
} else {
    echo "<tr><td>此處暫無內容</td></tr>";
}
?>

三、首頁 index.php 整合顯示

<?php
$db = mysql_connect('localhost', 'username', 'password');
mysql_select_db('your_db', $db);
?>
<table width="100%">
  <tr>
    <td width="50%">
      <?php $name = 'news'; include 'index_view.php'; ?>
    </td>
    <td width="50%">
      <?php $name = 'ctm'; include 'index_view.php'; ?>
    </td>
  </tr>
</table>

四、發布頁 index_pub.php 動態決定寫入資料表

<form action="index_view.php" method="post">
  <select name="db_name">
    <option value="news">news</option>
    <option value="ctm">ctm</option>
  </select>
  <input name="title"> <textarea name="detail"></textarea>
  <input type="submit">
</form>

<?php
switch ($_POST['db_name']) {
    case 'news': $name = 'news'; break;
    case 'ctm':  $name = 'ctm';  break;
}
$query = "INSERT INTO `$name` (title, detail) VALUES ('{$_POST['title']}', '{$_POST['detail']}')";
mysql_query($query, $db);
?>

五、內文頁 view_d.php 通用檢視

<?php
$db = mysql_connect('localhost', 'username', 'password');
mysql_select_db('your_db', $db);

$recod = $_GET['recod'] ?? 0;
$name  = $_GET['name'] ?? '';

if ($recod && $name) {
    $sql = "SELECT * FROM `$name` WHERE id = $recod";
    $row = mysql_fetch_assoc(mysql_query($sql, $db));
    echo "<p>標題:{$row['title']}</p>";
    echo "<p>內容:{$row['detail']}</p>";
} else {
    echo '文章不存在';
}
?>

安全性與現代化重構重點

  • SQL 注入防護:所有變數進入查詢前必須經 mysqli_real_escape_string 或改用預處理語句。
  • 資料表名稱白名單:$name 僅允許 ['news','ctm'],嚴禁直接拼接使用者輸入。
  • 錯誤處理:檢查 mysql_query 回傳值,失敗時記錄日誌並顯示友善訊息。
  • 分離關注點:現代架構建議採用 MVC,將資料存取封裝為 Model,顯示邏輯交給 View。

總結

透過「參數化資料表名稱」+「共用 include 檢視模組」,即可在單頁面靈活管理多來源內容。此模式適用於後台管理系統、多欄位門戶首頁等場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved