🗣 Wd提问: PHP源码点餐系统
🤖 Ai回答: 创建一个基于PHP的点餐系统是一个非常实用且常见的Web开发项目。下面我将为你提供一个基础但完整的PHP点餐系统源码框架,包括数据库设计、用户界面和核心功能(如菜单展示、添加到购物车、下单等),适合学习或二次开发。
🍽️ PHP点餐系统(简易版)
✅ 功能说明
用户浏览菜单
添加菜品到购物车
查看购物车并修改数量
提交订单
后台管理菜单(增删改查)
一、数据库设计(MySQL)
sql
创建数据库
CREATE DATABASE IF NOT EXISTS food_order_system;
USE food_order_system;
菜单表
CREATE TABLE menu (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
price DECIMAL(10,2) NOT NULL,
description TEXT,
image VARCHAR(255),
category ENUM('主食', '饮料', '甜点', '小吃') DEFAULT '小吃'
);
订单表
CREATE TABLE orders (
id INT AUTO_INCREMENT PRIMARY KEY,
customer_name VARCHAR(100) NOT NULL,
phone VARCHAR(20),
address TEXT,
total_price DECIMAL(10,2) NOT NULL,
order_time DATETIME DEFAULT CURRENT_TIMESTAMP,
status ENUM('待处理', '已接单', '已完成') DEFAULT '待处理'
);
订单详情表
CREATE TABLE order_items (
id INT AUTO_INCREMENT PRIMARY KEY,
order_id INT,
menu_id INT,
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)
);
二、文件结构
/food-order-system
├── index.php 首页 浏览菜单
├── cart.php 购物车页面
├── add_to_cart.php 添加菜品到购物车
├── checkout.php 提交订单
├── admin/
│ ├── index.php 后台首页
│ ├── add.php 添加菜品
│ └── delete.php 删除菜品
├── config.php 数据库连接
└── css/
└── style.css 样式文件(可选)
三、核心代码
1、`config.php` 数据库配置
php
<?php
$host = 'localhost';
$dbname = 'food_order_system';
$username = 'root'; // 修改为你的数据库用户名
$password = ''; // 修改为你的密码
try {
$pdo = new PDO(mysql:host=$host;dbname=$dbname;charset=utf8, $username, $password);
$pdo-setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
die(数据库连接失败: 、$e-getMessage());
}
?
2、`index.php` 主页展示菜单
php
<?php include 'config.php'; ?
<!DOCTYPE html
<html lang=zh
<head
<meta charset=UTF-8
<title在线点餐系统</title
<link rel=stylesheet href=css/style.css
</head
<body
<h1欢迎光临我们的餐厅</h1
<div class=menu
<?php
$stmt = $pdo-query(SELECT * FROM menu);
while ($row = $stmt-fetch()) {
echo <div class='dish';
echo <h3{$row['name']}</h3;
echo <p价格:¥{$row['price']}</p;
echo <p{$row['description']}</p;
echo <a href='add_to_cart.php?id={$row['id']}'加入购物车</a;
echo </div;
}
?
</div
<p<a href=cart.php查看购物车 ➔</a</p
</body
</html
3、`add_to_cart.php` 添加到购物车
php
<?php
session_start();
include 'config.php';
if (!isset($_SESSION['cart'])) {
$_SESSION['cart'] = [];
}
$id = $_GET['id'];
$stmt = $pdo-prepare(SELECT * FROM menu WHERE id = ?);
$stmt-execute([$id]);
$dish = $stmt-fetch();
if ($dish) {
if (isset($_SESSION['cart'][$id])) {
$_SESSION['cart'][$id]['quantity']++;
} else {
$_SESSION['cart'][$id] = [
'name' = $dish['name'],
'price' = $dish['price'],
'quantity' = 1
];
}
echo 已添加到购物车!<br;
echo <a href='index.php'继续点餐</a | <a href='cart.php'去结算</a;
} else {
echo 菜品不存在!;
}
?
4、`cart.php` 购物车页面
php
<?php session_start(); ?
<!DOCTYPE html
<html lang=zh
<head
<meta charset=UTF-8
<title购物车</title
</head
<body
<h1购物车</h1
<table border=1
<tr
<th菜品</th
<th单价</th
<th数量</th
<th小计</th
</tr
<?php
$total = 0;
if (!empty($_SESSION['cart'])) {
foreach ($_SESSION['cart'] as $id = $item) {
$subtotal = $item['price'] * $item['quantity'];
$total += $subtotal;
echo <tr
<td{$item['name']}</td
<td¥{$item['price']}</td
<td{$item['quantity']}</td
<td¥{$subtotal}</td
</tr;
}
} else {
echo <tr<td colspan='4'购物车为空</td</tr;
}
?
</table
<h3总计:¥<?= number_format($total, 2) ?</h3
<a href=checkout.php提交订单</a |
<a href=index.php继续点餐</a
</body
</html
5、`checkout.php` 提交订单
php
<?php session_start(); include 'config.php'; ?
<!DOCTYPE html
<html lang=zh
<head
<meta charset=UTF-8
<title提交订单</title
</head
<body
<h1填写订单信息</h1
<form action= method=post
姓名:<input type=text name=name required<br
手机:<input type=text name=phone required<br
地址:<textarea name=address required</textarea<br
<button type=submit name=submit提交订单</button
</form
<?php
if (isset($_POST['submit'])) {
$name = $_POST['name'];
$phone = $_POST['phone'];
$address = $_POST['address'];
$total_price = 0;
// 计算总价
foreach ($_SESSION['cart'] as $item) {
$total_price += $item['price'] * $item['quantity'];
}
try {
$pdo-beginTransaction();
// 插入订单
$stmt = $pdo-prepare(INSERT INTO orders (customer_name, phone, address, total_price) VALUES (?, ?, ?, ?));
$stmt-execute([$name, $phone, $address, $total_price]);
$order_id = $pdo-lastInsertId();
// 插入订单项
foreach ($_SESSION['cart'] as $menu_id = $item) {
$stmt = $pdo-prepare(INSERT INTO order_items (order_id, menu_id, quantity, price) VALUES (?, ?, ?, ?));
$stmt-execute([$order_id, $menu_id, $item['quantity'], $item['price']]);
}
$pdo-commit();
unset($_SESSION['cart']);
echo <p订单提交成功!订单号:{$order_id}</p;
echo <a href='index.php'返回首页</a;
} catch (Exception $e) {
$pdo-rollback();
echo 下单失败: 、$e-getMessage();
}
}
?
</body
</html
四、后台管理(简单示例)
`admin/index.php` 管理菜品列表
php
<?php include '../config.php'; ?
<h2管理菜单</h2
<a href=add.php添加新菜品</a
<table border=1
<tr<thID</th<th名称</th<th价格</th<th操作</th</tr
<?php
$stmt = $pdo-query(SELECT * FROM menu);
while ($row = $stmt-fetch()) {
echo <tr
<td{$row['id']}</td
<td{$row['name']}</td
<td¥{$row['price']}</td
<td<a href='delete.php?id={$row
📣 商家广告 :
👍
0
👎
IP地址: 139.34.8.196
搜索次数: 0
提问时间: 2025-11-05 22:30:42
🛒 域名购买 :
jamctr.com te.biz 8yw.net yf.gs 94.gold 81.biz ltkj.net 691.net.cn s.tw.cn 761.net.cn
❓️ 热门提问 :
租服务器机房 申请美国服务器 武汉idc机房排行榜 房山机房 云主机香港哪家好 湖南idc 5600g小主机 域名购买.top 挂机赚 子网划分工具php 豌豆Ai站群搜索引擎系统
🌐 域名评估 :
atyo.cn dji.ac.cn d.pw vtol.college 94.gold oo.nm.cn nn.sh.cn uav.yn.cn vv.jl.cn ee.gz.cn
⛏ 最新挖掘 :
凯里酸汤鱼 贵阳烤脑花 都匀毛尖茶 花溪牛肉粉 贵阳烤生蚝 贵阳烤豆腐 贵阳纸包鱼 贵阳特色菜
🖌 热门作画 :
🤝 关于我们:
豌豆Ai
域名
建站
站群
留痕
推广
评估
源码
开发Ai
工具
日记
价格
加盟
广告
流量
留言
联系
🗨 加入群聊 :
🔗 友情链接 :
霸屏软件
广东传递窗
ai提问
🧰 站长工具 :Ai工具 whois查询 搜索
📢 温馨提示 :本站所有问答由Ai自动创作,内容仅供参考,若有误差请用“联系”里面信息通知我们人工修改或删除。
👉 技术支持 :本站由豌豆Ai 提供技术支持,使用的最新版:《豌豆Ai站群搜索引擎系统 V.25.10.25》搭建本站。