php实现站内公告
PHP 实现站内公告的方法
数据库设计
创建一个公告表(例如 announcements),包含字段如 id、title、content、created_at 和 is_active。is_active 用于控制公告是否显示。
CREATE TABLE announcements (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) NOT NULL,
content TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
is_active BOOLEAN DEFAULT TRUE
);
添加公告功能
通过表单提交公告内容,将数据插入数据库。示例表单和 PHP 处理代码:
<form action="add_announcement.php" method="post">
<input type="text" name="title" placeholder="公告标题" required>
<textarea name="content" placeholder="公告内容" required></textarea>
<button type="submit">发布公告</button>
</form>
// add_announcement.php
$title = $_POST['title'];
$content = $_POST['content'];
$stmt = $pdo->prepare("INSERT INTO announcements (title, content) VALUES (?, ?)");
$stmt->execute([$title, $content]);
header("Location: announcements.php");
exit();
显示公告功能
从数据库查询公告数据并在页面中显示。示例代码:

// announcements.php
$stmt = $pdo->query("SELECT * FROM announcements WHERE is_active = TRUE 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>";
}
管理公告功能
管理员可以编辑或删除公告。示例代码:
// edit_announcement.php
$id = $_GET['id'];
$stmt = $pdo->prepare("SELECT * FROM announcements WHERE id = ?");
$stmt->execute([$id]);
$announcement = $stmt->fetch();
// 更新公告
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$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();
}
// delete_announcement.php
$id = $_GET['id'];
$stmt = $pdo->prepare("DELETE FROM announcements WHERE id = ?");
$stmt->execute([$id]);
header("Location: announcements.php");
exit();
前端样式优化
使用 CSS 美化公告显示,例如添加边框、背景色和动画效果。

.announcement {
border: 1px solid #ddd;
padding: 15px;
margin-bottom: 20px;
background: #f9f9f9;
border-radius: 5px;
}
.announcement h3 {
margin-top: 0;
color: #333;
}
实时更新公告
通过 AJAX 实现公告的实时更新,无需刷新页面即可查看最新公告。
setInterval(function() {
$.get("get_announcements.php", function(data) {
$("#announcements-container").html(data);
});
}, 5000);
// get_announcements.php
$stmt = $pdo->query("SELECT * FROM announcements WHERE is_active = TRUE ORDER BY created_at DESC");
$announcements = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($announcements as $announcement) {
echo "<div class='announcement'>";
echo "<h3>{$announcement['title']}</h3>";
echo "<p>{$announcement['content']}</p>";
echo "</div>";
}
权限控制
确保只有管理员可以发布和管理公告,普通用户只能查看。
// 检查用户角色
if ($_SESSION['role'] !== 'admin') {
header("Location: index.php");
exit();
}
通过以上方法,可以高效实现 PHP 站内公告功能,满足基本需求并具备扩展性。






