当前位置:首页 > PHP

PHP点餐功能实现代码

2026-04-03 14:03:38PHP

数据库设计

创建数据库表存储菜品信息、订单信息和用户信息。菜品表包含字段如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注入的措施。

PHP点餐功能实现代码

$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点餐系统功能,包括菜品展示、购物车管理、订单处理和用户界面交互。实际应用中需要根据具体需求进行调整和完善。

标签: 代码功能
分享给朋友:

相关文章

vue怎么实现文本代码实现

vue怎么实现文本代码实现

Vue 实现文本代码展示的方法 在 Vue 中展示代码文本通常需要结合语法高亮和格式化的功能,以下是几种常见的实现方式: 使用 <pre> 和 <code> 标签 通过 HT…

php登陆功能实现

php登陆功能实现

实现PHP登录功能 数据库准备 创建一个用户表存储登录信息,基本字段包括用户名、密码(需加密)等: CREATE TABLE users ( id INT AUTO_INCREMENT PR…

网页表格制作css代码

网页表格制作css代码

基础表格样式 使用CSS为HTML表格添加基础样式,包括边框、间距和背景色: table { width: 100%; border-collapse: collapse; margin…

vue实现表情功能

vue实现表情功能

实现表情功能的基本思路 在Vue中实现表情功能通常涉及表情选择器的UI组件开发、表情数据的存储与渲染,以及用户输入与表情的交互逻辑。以下是具体实现方法: 表情数据准备 准备一个表情符号的数组或对象,…

vue 实现编辑功能

vue 实现编辑功能

Vue 实现编辑功能的步骤 数据绑定与状态管理 使用v-model双向绑定表单数据,结合data或Vuex/Pinia管理编辑状态。例如: data() { return { edita…

vue实现单选功能

vue实现单选功能

使用 <input type="radio"> 实现单选 在 Vue 中可以通过 v-model 绑定单选按钮组的值,确保同一组单选按钮的 name 属性相同。 <template…