豌豆Ai站群搜索引擎系统 V.25.10.25 网址:www.wd.chat

🗣 Wd提问: MySQL点餐系统源码

🤖 Ai回答:
以下是一个基础MySQL点餐系统的完整实现方案,包含数据库设计、SQL脚本、简单PHP后端代码示例。适用于学习或快速搭建原型系统(注意:生产环境需加强安全性和错误处理)。

一、数据库设计(SQL脚本)
sql
创建数据库
CREATE DATABASE IF NOT EXISTS restaurant_db;
USE restaurant_db;

餐桌表
CREATE TABLE tables (
id INT AUTO_INCREMENT PRIMARY KEY,
table_number VARCHAR(50) NOT NULL UNIQUE,
status ENUM('available', 'occupied', 'reserved') DEFAULT 'available',
capacity INT NOT NULL
);

菜单表
CREATE TABLE menu (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
description TEXT,
price DECIMAL(10, 2) NOT NULL,
category VARCHAR(50),
image_url VARCHAR(255) DEFAULT 'default.jpg'
);

订单表
CREATE TABLE orders (
id INT AUTO_INCREMENT PRIMARY KEY,
table_id INT NOT NULL,
order_time DATETIME DEFAULT CURRENT_TIMESTAMP,
status ENUM('pending', 'preparing', 'completed', 'cancelled') DEFAULT 'pending',
total DECIMAL(10, 2) DEFAULT 0.00,
FOREIGN KEY (table_id) REFERENCES tables(id) ON DELETE CASCADE
);

订单详情表
CREATE TABLE order_items (
id INT AUTO_INCREMENT PRIMARY KEY,
order_id INT NOT NULL,
menu_id INT NOT NULL,
quantity INT NOT NULL,
price DECIMAL(10, 2) NOT NULL, 记录下单时的价格(防价格变动影响历史订单)
FOREIGN KEY (order_id) REFERENCES orders(id) ON DELETE CASCADE,
FOREIGN KEY (menu_id) REFERENCES menu(id) ON DELETE CASCADE
);

插入测试数据
INSERT INTO tables (table_number, status, capacity) VALUES
('Table 1', 'available', 4),
('Table 2', 'available', 2),
('Table 3', 'reserved', 6);

INSERT INTO menu (name, description, price, category, image_url) VALUES
('Hamburger', 'Juicy beef burger with cheese', 10.99, 'Main Course', 'hamburger.jpg'),
('Salad', 'Fresh garden salad', 5.99, 'Appetizer', 'salad.jpg'),
('Coke', 'Cold soft drink', 1.99, 'Beverage', 'coke.jpg'),
('Pizza', 'Cheese pizza', 12.50, 'Main Course', 'pizza.jpg'),
('Fries', 'Crispy fries', 3.50, 'Side', 'fries.jpg');

二、基础PHP后端代码示例
1、数据库连接配置 (`db.php`)
php
<?php
$host = 'localhost';
$db = 'restaurant_db';
$user = 'root';
$pass = '';
$charset = 'utf8mb4';

$dsn = mysql:host=$host;dbname=$db;charset=$charset;
$options = [
PDO::ATTR_ERRMODE = PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE = PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES = false,
];

try {
$pdo = new PDO($dsn, $user, $pass, $options);
} catch (\PDOException $e) {
die(Database connection failed: 、$e-getMessage());
}

2、菜单展示页面 (`index.php`)
php
<!DOCTYPE html
<html
<head
<title点餐系统</title
<style
body { font-family: Arial, sans-serif; }
.menu-item { border: 1px solid ddd; padding: 10px; margin: 10px; }
</style
</head
<body
<h1今日菜单</h1

<?php require 'db.php'; ?
<?php $stmt = $pdo-query(SELECT * FROM menu); ?

<?php while ($menu = $stmt-fetch()): ?
<div class=menu-item
<h3<?= htmlspecialchars($menu['name']) ?</h3
<p<?= htmlspecialchars($menu['description']) ?</p
<p价格: $<?= number_format($menu['price'], 2) ?</p
<form action=order.php method=post
<input type=hidden name=menu_id value=<?= $menu['id'] ?
<label数量: <input type=number name=quantity value=1 min=1</label
<button type=submit加入订单</button
</form
</div
<?php endwhile; ?
</body
</html

3、订单处理逻辑 (`order.php`)
php
<?php
require 'db.php';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$menu_id = $_POST['menu_id'];
$quantity = (int)$_POST['quantity'];
$table_id = 1; // 示例中固定使用Table 1(实际项目需动态获取桌号)

// 检查是否存在未完成的订单
$order_stmt = $pdo-prepare(SELECT id FROM orders WHERE table_id = ? AND status = 'pending');
$order_stmt-execute([$table_id]);
$order = $order_stmt-fetch();

if (!$order) {
// 创建新订单
$order_stmt = $pdo-prepare(INSERT INTO orders (table_id) VALUES (?));
$order_stmt-execute([$table_id]);
$order_id = $pdo-lastInsertId();
} else {
$order_id = $order['id'];
}

// 获取当前菜品价格
$menu_stmt = $pdo-prepare(SELECT price FROM menu WHERE id = ?);
$menu_stmt-execute([$menu_id]);
$menu = $menu_stmt-fetch();

if ($menu) {
$price = $menu['price'];
// 插入订单项
$item_stmt = $pdo-prepare(INSERT INTO order_items (order_id, menu_id, quantity, price) VALUES (?, ?, ?, ?));
$item_stmt-execute([$order_id, $menu_id, $quantity, $price]);

// 更新订单总金额
$total_stmt = $pdo-prepare(
UPDATE orders SET total = (SELECT SUM(quantity * price) FROM order_items WHERE order_id = ?) WHERE id = ?
);
$total_stmt-execute([$order_id, $order_id]);

echo 已添加到订单!<br;
echo <a href='index.php'继续点餐</a | <a href='view_order.php'查看当前订单</a;
} else {
echo 菜品不存在!;
}
}

4、查看当前订单 (`view_order.php`)
php
<?php
require 'db.php';
$table_id = 1; // 示例中固定使用Table 1

// 获取当前订单详情
$stmt = $pdo-prepare(
SELECT m.name, oi.quantity, oi.price, (oi.quantity * oi.price) as item_total
FROM order_items oi
JOIN menu m ON oi.menu_id = m.id
WHERE oi.order_id IN (
SELECT id FROM orders WHERE table_id = ? AND status = 'pending'
)
);
$stmt-execute([$table_id]);
$items = $stmt-fetchAll();

// 获取订单总金额
$total_stmt = $pdo-prepare(SELECT total FROM orders WHERE table_id = ? AND status = 'pending');
$total_stmt-execute([$table_id]);
$total = $total_stmt-fetchColumn() ?: 0;
?

<!DOCTYPE html
<html
<body
<h1当前订单</h1
<table border=1
<tr
<th菜品</th
<th数量</th
<th单价</th
<th小计</th
</tr
<?php foreach ($items as $item): ?
<tr
<td<?= htmlspecialchars($item['name']) ?</td
<td<?= $item['quantity'] ?</td
<td$<?= number_format($item['price'], 2) ?</td
<td$<?= number_format($item['item_total'], 2) ?</td
</tr
<?php endforeach; ?
<tr
<td colspan=3<strong总计</strong</td
<td<strong$<?= number_format($total, 2) ?</strong</td
</tr
</table
<a href=index.php继续点餐</a
</body
</html

三、关键说明
1、安全注意事项:
生产环境需添加输入验证(如`filter_var()`)、防止SQL注入(已用预处理,但需检查所有输入)。
密码存储需用`password_hash()`(本示例未涉及用户登录,如需扩展需添加)。
避免直接暴露数据库凭证(建议将`db.php`放在非公开目录)。

2、功能扩展建议:
用户系统:添加`users`表实现登录。
支付集成:对接支付宝/微信支付API。
库存管理:添加`inventory`表跟踪

Ai作答

📣 商家广告


广告招商

香港vps

求名

星座

姓名


0

IP地址: 247.107.48.173

搜索次数: 0

提问时间: 2025-11-11 06:23:03

🛒 域名购买
875.net.cn
ftp.ink
82.chat
app.hl.cn
rj.biz
xuanhuo.com.cn
2.sd.cn
6.ac.cn
53.cx
j-f.com.cn

❓️ 热门提问
笔记本怎么直连服务器
域名怎么永久购买
js获取域名
香港主机租用
免费领流量网站
成都服务器托管机房
虚拟主机的
PHP源码叫号系统
debian做服务器
服务器百兆托管
豌豆Ai站群搜索引擎系统

🌐 域名评估
yj.gg
xphone.run
h.hl.cn
vance.team
ii.hn.cn
r.gx.cn
pp.js.cn
si.qh.cn
deepseek.rent
wqzd.cn

⛏ 最新挖掘
凯里酸汤鱼
贵阳烤脑花
都匀毛尖茶
花溪牛肉粉
贵阳烤生蚝
贵阳烤豆腐
贵阳纸包鱼
贵阳特色菜

🖌 热门作画

🤝 关于我们:
豌豆Ai 域名 建站 站群 留痕 推广 评估 源码
开发Ai 工具 日记 价格 加盟 广告 流量 留言 联系

🗨 加入群聊
群

🔗 友情链接
Programa de motor de búsqueda  Sökmotor Android  ai提问

🧰 站长工具
Ai工具  whois查询  搜索

📢 温馨提示:本站所有问答由Ai自动创作,内容仅供参考,若有误差请用“联系”里面信息通知我们人工修改或删除。

👉 技术支持:本站由豌豆Ai提供技术支持,使用的最新版:《豌豆Ai站群搜索引擎系统 V.25.10.25》搭建本站。

上一篇 87203 87204 87205 下一篇