PHP点餐功能实现代码
数据库设计
创建数据库表存储菜品信息、订单信息和用户信息。菜品表包含字段如id、name、price、description等;订单表包含order_id、user_id、dish_id、quantity、total_price、order_time等。
CREATE TABLE dishes (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
price DECIMAL(10,2) NOT NULL,
description TEXT,
image VARCHAR(255)
);
CREATE TABLE orders (
order_id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NOT NULL,
dish_id INT NOT NULL,
quantity INT NOT NULL,
total_price DECIMAL(10,2) NOT NULL,
order_time DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (dish_id) REFERENCES dishes(id)
);
菜品展示页面
从数据库获取菜品列表并展示,包含图片、名称、价格和加入购物车按钮。
<?php
$conn = new mysqli("localhost", "username", "password", "restaurant_db");
$sql = "SELECT * FROM dishes";
$result = $conn->query($sql);
while($row = $result->fetch_assoc()) {
echo '<div class="dish-item">';
echo '<img src="'.$row['image'].'" alt="'.$row['name'].'">';
echo '<h3>'.$row['name'].'</h3>';
echo '<p>'.$row['description'].'</p>';
echo '<p>价格: ¥'.$row['price'].'</p>';
echo '<button onclick="addToCart('.$row['id'].')">加入购物车</button>';
echo '</div>';
}
$conn->close();
?>
购物车功能
使用JavaScript和PHP会话实现购物车功能,存储用户选择的菜品。
// 添加菜品到购物车
session_start();
if(isset($_POST['dish_id'])) {
$dish_id = $_POST['dish_id'];
if(!isset($_SESSION['cart'])) {
$_SESSION['cart'] = array();
}
if(isset($_SESSION['cart'][$dish_id])) {
$_SESSION['cart'][$dish_id]++;
} else {
$_SESSION['cart'][$dish_id] = 1;
}
echo json_encode(['status' => 'success']);
}
订单提交处理
处理用户提交的订单,将购物车内容存入数据库。
session_start();
if(isset($_SESSION['cart']) && !empty($_SESSION['cart'])) {
$conn = new mysqli("localhost", "username", "password", "restaurant_db");
$user_id = $_SESSION['user_id']; // 假设用户已登录
foreach($_SESSION['cart'] as $dish_id => $quantity) {
$sql = "SELECT price FROM dishes WHERE id = $dish_id";
$result = $conn->query($sql);
$row = $result->fetch_assoc();
$total_price = $row['price'] * $quantity;
$insert = "INSERT INTO orders (user_id, dish_id, quantity, total_price)
VALUES ($user_id, $dish_id, $quantity, $total_price)";
$conn->query($insert);
}
unset($_SESSION['cart']);
echo "订单提交成功!";
$conn->close();
}
用户界面优化
添加AJAX实现无刷新操作,改善用户体验。
function addToCart(dish_id) {
$.ajax({
url: 'add_to_cart.php',
type: 'POST',
data: {dish_id: dish_id},
success: function(response) {
alert('已添加到购物车');
updateCartCount();
}
});
}
function updateCartCount() {
$.get('get_cart_count.php', function(data) {
$('#cart-count').text(data.count);
}, 'json');
}
安全措施
实施输入验证和防止SQL注入的措施。

$dish_id = filter_input(INPUT_POST, 'dish_id', FILTER_VALIDATE_INT);
if($dish_id === false || $dish_id === null) {
die("无效的菜品ID");
}
$stmt = $conn->prepare("INSERT INTO orders (user_id, dish_id, quantity) VALUES (?, ?, ?)");
$stmt->bind_param("iii", $user_id, $dish_id, $quantity);
$stmt->execute();
以上代码实现了基本的PHP点餐系统功能,包括菜品展示、购物车管理、订单处理和用户界面交互。实际应用中需要根据具体需求进行调整和完善。






