当前位置:首页 > 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 中实现分页功能通常需要结合后端 API 或前端数据分页逻辑。以下是两种常见的实现方式: 前端分页实现 适用于数据量较小的情况,直接在 Vue 组件中处理分页逻辑。…

vue实现复选功能

vue实现复选功能

Vue 实现复选功能 基础实现 使用 v-model 绑定到数组实现多选功能。当复选框被选中时,其 value 会被添加到数组中;取消选中时,会从数组中移除。 <template>…

vue实现销假功能

vue实现销假功能

实现销假功能的Vue方案 在Vue中实现销假功能通常需要结合前端界面、状态管理和后端API交互。以下是完整的实现方案: 基础组件结构 创建请假表单组件LeaveForm.vue: <temp…

vue 实现拍照功能

vue 实现拍照功能

使用HTML5的getUserMedia API实现拍照 在Vue中实现拍照功能可以通过HTML5的getUserMedia API访问摄像头,结合canvas元素捕获图像。 安装依赖(如需处理图像…

vue实现打印功能

vue实现打印功能

vue实现打印功能的几种方法 使用window.print()方法 在Vue组件中直接调用浏览器原生打印API,适合简单打印需求 methods: { handlePrint() { w…

vue 实现编辑功能

vue 实现编辑功能

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