在开发点餐系统的客户反馈功能前,需要明确以下核心需求:
CREATE TABLE `feedback` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`order_id` varchar(20) DEFAULT NULL,
`user_id` int(11) DEFAULT NULL,
`rating` tinyint(1) DEFAULT 5,
`content` text DEFAULT NULL,
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
`status` tinyint(1) DEFAULT 0 COMMENT '0未处理1已处理',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
使用Bootstrap构建响应式表单:
<form action="submit_feedback.php" method="post" id="feedbackForm">
<div class="form-group">
<label>订单号</label>
<input type="text" class="form-control" name="order_id" required>
</div>
<div class="form-group">
<label>评分</label>
<div class="star-rating">
<!-- 星级评分代码 -->
</div>
</div>
<div class="form-group">
<label>反馈内容</label>
<textarea class="form-control" name="content" rows="5" required></textarea>
</div>
<button type="submit" class="btn btn-primary">提交反馈</button>
</form>
创建submit_feedback.php处理表单提交:
<?php
// 连接数据库
$db = new PDO('mysql:host=localhost;dbname=restaurant', 'username', 'password');
// 获取并过滤输入
$order_id = filter_input(INPUT_POST, 'order_id', FILTER_SANITIZE_STRING);
$rating = filter_input(INPUT_POST, 'rating', FILTER_SANITIZE_NUMBER_INT);
$content = filter_input(INPUT_POST, 'content', FILTER_SANITIZE_STRING);
// 验证数据
if(empty($order_id) || $rating < 1 || $rating > 5) {
die('无效的输入数据');
}
// 准备SQL语句
$stmt = $db->prepare("INSERT INTO feedback (order_id, rating, content) VALUES (?, ?, ?)");
// 执行插入
if($stmt->execute([$order_id, $rating, $content])) {
echo '反馈提交成功!';
} else {
echo '提交失败,请稍后再试';
}
?>
开发管理员查看界面:
<?php
// 获取反馈列表
$stmt = $db->query("SELECT * FROM feedback ORDER BY create_time DESC");
$feedbacks = $stmt->fetchAll(PDO::FETCH_ASSOC);
// 显示表格
foreach($feedbacks as $fb) {
echo "<tr>";
echo "<td>{$fb['order_id']}</td>";
echo "<td>{$fb['rating']}星</td>";
echo "<td>{$fb['content']}</td>";
echo "<td>{$fb['create_time']}</td>";
echo "</tr>";
}
?>
为提升页面收录效果: