實現目標:使用 PHP 與 MySQL 函數完成新聞的發布、瀏覽、修改、刪除全流程。
CREATE DATABASE newsdb;
CREATE TABLE news (
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(64) NOT NULL,
keywords VARCHAR(64) NOT NULL,
author VARCHAR(16) NOT NULL,
addtime INT UNSIGNED NOT NULL,
content TEXT NOT NULL
);
dbconfig.php:數據庫連接配置menu.php:公共導航欄index.php:新聞列表首頁add.php:發布新聞表單edit.php:編輯新聞表單action.php:增刪改邏輯處理<?php
define("HOST", "localhost");
define("USER", "root");
define("PASS", "root");
define("DBNAME", "newsdb");
?>
<h2>新聞管理系統</h2> <a href="index.php">瀏覽新聞</a> <a href="add.php">發布新聞</a> <hr width="90%"/>
<form action="action.php?action=add" method="post">
<table>
<tr><td>標題:</td><td><input name="title"/></td></tr>
<tr><td>關鍵字:</td><td><input name="keywords"/></td></tr>
<tr><td>作者:</td><td><input name="author"/></td></tr>
<tr><td>內容:</td><td><textarea name="content"></textarea></td></tr>
<tr><td colspan="2"><input type="submit" value="添加"/></td></tr>
</table>
</form>
<?php
require("dbconfig.php");
$link = @mysql_connect(HOST, USER, PASS) or die("連接失敗!");
mysql_select_db(DBNAME, $link);
switch($_GET["action"]) {
case "add":
$title = $_POST["title"];
$keywords = $_POST["keywords"];
$author = $_POST["author"];
$content = $_POST["content"];
$addtime = time();
$sql = "INSERT INTO news VALUES (NULL, '{$title}', '{$keywords}', '{$author}', {$addtime}, '{$content}')";
mysql_query($sql, $link);
$id = mysql_insert_id($link);
echo $id > 0 ? "添加成功!" : "添加失敗!";
break;
case "del":
$id = $_GET['id'];
$sql = "DELETE FROM news WHERE id={$id}";
mysql_query($sql, $link);
header("Location: index.php");
break;
case "update":
$id = $_POST['id'];
$sql = "UPDATE news SET title='{$_POST[title]}', keywords='{$_POST[keywords]}', author='{$_POST[author]}', content='{$_POST[content]}' WHERE id={$id}";
mysql_query($sql, $link);
header("Location: index.php");
break;
}
mysql_close($link);
?>
<?php
require("dbconfig.php");
$link = @mysql_connect(HOST, USER, PASS) or die("連接失敗!");
mysql_select_db(DBNAME, $link);
$sql = "SELECT * FROM news ORDER BY addtime DESC";
$result = mysql_query($sql, $link);
?>
<table border="1">
<tr><th>ID</th><th>標題</th><th>關鍵字</th><th>作者</th><th>時間</th><th>內容</th><th>操作</th></tr>
<?php while($row = mysql_fetch_assoc($result)): ?>
<tr>
<td><?=$row['id']?></td>
<td><?=$row['title']?></td>
<td><?=$row['keywords']?></td>
<td><?=$row['author']?></td>
<td><?=date("Y-m-d", $row['addtime'])?></td>
<td><?=$row['content']?></td>
<td>
<a href="javascript:dodel(<?=$row['id']?>)">刪除</a>
<a href="edit.php?id=<?=$row['id']?>">修改</a>
</td>
</tr>
<?php endwhile; ?>
</table>
<?php mysql_free_result($result); mysql_close($link); ?>
<?php
require("dbconfig.php");
$link = @mysql_connect(HOST, USER, PASS) or die("連接失敗!");
mysql_select_db(DBNAME, $link);
$sql = "SELECT * FROM news WHERE id={$_GET['id']}";
$result = mysql_query($sql, $link);
$news = mysql_fetch_assoc($result);
?>
<form action="action.php?action=update" method="post">
<input type="hidden" name="id" value="<?=$news['id']?>" />
<table>
<tr><td>標題:</td><td><input name="title" value="<?=$news['title']?>" /></td></tr>
<tr><td>關鍵字:</td><td><input name="keywords" value="<?=$news['keywords']?>" /></td></tr>
<tr><td>作者:</td><td><input name="author" value="<?=$news['author']?>" /></td></tr>
<tr><td>內容:</td><td><textarea name="content"><?=$news['content']?></textarea></td></tr>
<tr><td colspan="2"><input type="submit" value="編輯"/></td></tr>
</table>
</form>
提示:本示例使用已棄用的
mysql_*函數,現代項目請改用mysqli或PDO並採用預處理語句防範 SQL 注入。