在單一首頁同時顯示多個資料表(如 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 '文章不存在';
}
?>
mysqli_real_escape_string 或改用預處理語句。$name 僅允許 ['news','ctm'],嚴禁直接拼接使用者輸入。mysql_query 回傳值,失敗時記錄日誌並顯示友善訊息。透過「參數化資料表名稱」+「共用 include 檢視模組」,即可在單頁面靈活管理多來源內容。此模式適用於後台管理系統、多欄位門戶首頁等場景。