php实现站内公告
实现站内公告的PHP方法
数据库设计
创建公告数据表,包含字段如id、title、content、create_time、status等。示例SQL:
CREATE TABLE `notices` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(255) NOT NULL,
`content` text NOT NULL,
`create_time` datetime NOT NULL,
`status` tinyint(1) NOT NULL DEFAULT '1',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
后台管理功能
创建公告管理页面,包含添加、编辑、删除功能。示例添加公告代码:
// 处理表单提交
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$title = $_POST['title'];
$content = $_POST['content'];
$create_time = date('Y-m-d H:i:s');
$sql = "INSERT INTO notices (title, content, create_time) VALUES (?, ?, ?)";
$stmt = $pdo->prepare($sql);
$stmt->execute([$title, $content, $create_time]);
header('Location: notice_list.php');
exit;
}
前台展示功能
在网站公共区域显示最新公告,示例查询代码:
// 获取最新公告
$sql = "SELECT * FROM notices WHERE status = 1 ORDER BY create_time DESC LIMIT 5";
$notices = $pdo->query($sql)->fetchAll(PDO::FETCH_ASSOC);
// 在模板中显示
foreach ($notices as $notice) {
echo '<div class="notice-item">';
echo '<h4>'.$notice['title'].'</h4>';
echo '<p>'.$notice['content'].'</p>';
echo '<span class="notice-time">'.date('Y-m-d', strtotime($notice['create_time'])).'</span>';
echo '</div>';
}
样式优化
添加CSS样式提升公告显示效果:
.notice-item {
border: 1px solid #ddd;
padding: 15px;
margin-bottom: 10px;
border-radius: 4px;
background-color: #f9f9f9;
}
.notice-item h4 {
margin-top: 0;
color: #337ab7;
}
.notice-time {
display: block;
font-size: 12px;
color: #999;
text-align: right;
}
定时公告功能
实现定时发布公告功能,可在数据库中添加publish_time字段:
ALTER TABLE notices ADD publish_time datetime AFTER create_time;
查询时筛选当前时间之前的公告:
$current_time = date('Y-m-d H:i:s');
$sql = "SELECT * FROM notices WHERE status = 1 AND publish_time <= ? ORDER BY publish_time DESC";
$stmt = $pdo->prepare($sql);
$stmt->execute([$current_time]);
$notices = $stmt->fetchAll(PDO::FETCH_ASSOC);





