php实现公告
PHP实现公告系统
数据库设计
创建公告表announcements,包含字段:id(主键)、title(标题)、content(内容)、created_at(发布时间)、updated_at(更新时间)。
CREATE TABLE announcements (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) NOT NULL,
content TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
添加公告功能 通过表单提交公告信息,使用PHP处理并存入数据库。

<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$title = $_POST['title'];
$content = $_POST['content'];
$stmt = $pdo->prepare("INSERT INTO announcements (title, content) VALUES (?, ?)");
$stmt->execute([$title, $content]);
header("Location: announcements.php");
exit;
}
?>
<form method="post">
<input type="text" name="title" placeholder="公告标题" required>
<textarea name="content" placeholder="公告内容" required></textarea>
<button type="submit">发布公告</button>
</form>
显示公告列表 从数据库查询公告并按发布时间倒序排列。
<?php
$stmt = $pdo->query("SELECT * FROM announcements ORDER BY created_at DESC");
$announcements = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($announcements as $announcement) {
echo "<h3>{$announcement['title']}</h3>";
echo "<p>{$announcement['content']}</p>";
echo "<small>发布时间: {$announcement['created_at']}</small>";
}
?>
编辑和删除公告 提供编辑和删除功能,确保操作权限控制。

<?php
if (isset($_GET['delete'])) {
$id = $_GET['delete'];
$stmt = $pdo->prepare("DELETE FROM announcements WHERE id = ?");
$stmt->execute([$id]);
header("Location: announcements.php");
exit;
}
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['edit'])) {
$id = $_POST['id'];
$title = $_POST['title'];
$content = $_POST['content'];
$stmt = $pdo->prepare("UPDATE announcements SET title = ?, content = ? WHERE id = ?");
$stmt->execute([$title, $content, $id]);
header("Location: announcements.php");
exit;
}
?>
分页功能 实现公告列表的分页显示,避免数据量过大时加载缓慢。
<?php
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$perPage = 5;
$offset = ($page - 1) * $perPage;
$stmt = $pdo->prepare("SELECT * FROM announcements ORDER BY created_at DESC LIMIT ? OFFSET ?");
$stmt->bindValue(1, $perPage, PDO::PARAM_INT);
$stmt->bindValue(2, $offset, PDO::PARAM_INT);
$stmt->execute();
$announcements = $stmt->fetchAll(PDO::FETCH_ASSOC);
$total = $pdo->query("SELECT COUNT(*) FROM announcements")->fetchColumn();
$pages = ceil($total / $perPage);
for ($i = 1; $i <= $pages; $i++) {
echo "<a href='announcements.php?page=$i'>$i</a> ";
}
?>
注意事项
- 使用预处理语句防止SQL注入。
- 对用户输入进行验证和过滤。
- 确保敏感操作(如删除)有权限控制。
- 考虑使用框架(如Laravel)简化开发流程。






