🔥 ฟีเจอร์หลักของระบบ

  • ลูกค้าสั่งอาหารผ่านมือถือ โดยสแกน QR Code
  • พนักงานเห็นออเดอร์แบบเรียลไทม์ และอัปเดตสถานะ
  • รองรับหลายโต๊ะ (ลูกค้าเลือกหมายเลขโต๊ะก่อนสั่ง)
  • ระบบแจ้งเตือนพนักงานเมื่อมีออเดอร์ใหม่
  • สามารถใช้งานผ่านมือถือ (Responsive Design)

📌 1. สร้างฐานข้อมูล MySQL

CREATE DATABASE restaurant_orders;
USE restaurant_orders;

-- โต๊ะอาหาร
CREATE TABLE tables (
    id INT AUTO_INCREMENT PRIMARY KEY,
    table_number INT NOT NULL UNIQUE,
    status ENUM('available', 'occupied') DEFAULT 'available'
);

-- เมนูอาหาร
CREATE TABLE menu (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    price DECIMAL(10,2) NOT NULL
);

-- รายการออเดอร์
CREATE TABLE orders (
    id INT AUTO_INCREMENT PRIMARY KEY,
    table_id INT NOT NULL,
    order_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    status ENUM('pending', 'preparing', 'served') DEFAULT 'pending',
    FOREIGN KEY (table_id) REFERENCES tables(id)
);

-- รายการอาหารที่สั่ง
CREATE TABLE order_items (
    id INT AUTO_INCREMENT PRIMARY KEY,
    order_id INT NOT NULL,
    menu_id INT NOT NULL,
    quantity INT NOT NULL,
    subtotal DECIMAL(10,2) NOT NULL,
    FOREIGN KEY (order_id) REFERENCES orders(id),
    FOREIGN KEY (menu_id) REFERENCES menu(id)
);

📌 2. เชื่อมต่อฐานข้อมูล (db.php)

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "restaurant_orders";

$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
    die("เชื่อมต่อฐานข้อมูลล้มเหลว: " . $conn->connect_error);
}
?>

📌 3. หน้าให้ลูกค้าสั่งอาหารผ่านมือถือ (order_food.php)

<?php
include 'db.php';

// รับหมายเลขโต๊ะจาก URL
$table_id = isset($_GET['table_id']) ? (int)$_GET['table_id'] : 0;
if (!$table_id) {
    die("หมายเลขโต๊ะไม่ถูกต้อง!");
}

// ดึงรายการเมนู
$menu_items = $conn->query("SELECT * FROM menu");
?>

<h2>สั่งอาหาร - โต๊ะที่ <?= $table_id ?></h2>
<form method="post" action="process_order.php">
    <input type="hidden" name="table_id" value="<?= $table_id ?>">
    <?php while ($item = $menu_items->fetch_assoc()): ?>
        <label>
            <input type="checkbox" name="menu[<?= $item['id'] ?>]" value="1">
            <?= $item['name'] ?> - <?= $item['price'] ?> บาท
            <input type="number" name="quantity[<?= $item['id'] ?>]" min="1" value="1">
        </label><br>
    <?php endwhile; ?>
    <button type="submit">สั่งอาหาร</button>
</form>

📌 4. ประมวลผลออเดอร์ (process_order.php)

<?php
include 'db.php';

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $table_id = $_POST['table_id'];
    $menu_selected = $_POST['menu'];
    $quantities = $_POST['quantity'];

    if (!$menu_selected) {
        die("กรุณาเลือกเมนูอาหาร!");
    }

    // สร้างออเดอร์ใหม่
    $conn->query("INSERT INTO orders (table_id) VALUES ($table_id)");
    $order_id = $conn->insert_id;

    // บันทึกรายการอาหาร
    foreach ($menu_selected as $menu_id => $value) {
        $quantity = $quantities[$menu_id];
        $price = $conn->query("SELECT price FROM menu WHERE id = $menu_id")->fetch_assoc()['price'];
        $subtotal = $price * $quantity;

        $conn->query("INSERT INTO order_items (order_id, menu_id, quantity, subtotal) VALUES ($order_id, $menu_id, $quantity, $subtotal)");
    }

    echo "ออเดอร์ของคุณถูกส่งแล้ว!";
    echo "<a href='order_food.php?table_id=$table_id'>กลับไปที่เมนู</a>";
}
?>

📌 5. หน้าพนักงานดูออเดอร์ (view_orders.php)

<?php
include 'db.php';

$orders = $conn->query("SELECT * FROM orders WHERE status = 'pending'");

echo "<h2>ออเดอร์ใหม่</h2>";
while ($order = $orders->fetch_assoc()) {
    $order_id = $order['id'];
    echo "<h3>โต๊ะที่: {$order['table_id']} | สถานะ: {$order['status']}</h3>";

    $items = $conn->query("SELECT menu.name, order_items.quantity, order_items.subtotal FROM order_items 
                           JOIN menu ON order_items.menu_id = menu.id WHERE order_id = $order_id");

    while ($item = $items->fetch_assoc()) {
        echo "{$item['name']} x{$item['quantity']} - {$item['subtotal']} บาท<br>";
    }

    echo "<a href='update_order.php?order_id=$order_id&status=preparing'>กำลังเตรียม</a> | ";
    echo "<a href='update_order.php?order_id=$order_id&status=served'>เสิร์ฟแล้ว</a>";
    echo "<hr>";
}
?>

📌 6. อัปเดตสถานะออเดอร์ (update_order.php)

<?php
include 'db.php';

if (isset($_GET['order_id']) && isset($_GET['status'])) {
    $order_id = $_GET['order_id'];
    $status = $_GET['status'];

    $conn->query("UPDATE orders SET status = '$status' WHERE id = $order_id");
    header("Location: view_orders.php");
}
?>

📌 7. สร้าง QR Code สำหรับแต่ละโต๊ะ

สามารถใช้ Google API หรือไลบรารี PHP QR Code เพื่อสร้าง QR Code ที่ลูกค้าสแกนไปที่ order_food.php?table_id=XX

ตัวอย่างโค้ด:

$qr_text = "https://yourwebsite.com/order_food.php?table_id=1";
echo '<img src="https://chart.googleapis.com/chart?chs=200x200&cht=qr&chl=' . urlencode($qr_text) . '" />';

📌 8. ปรับให้ใช้งานบนมือถือ

เพิ่ม Bootstrap สำหรับ UI ที่สวยงามและรองรับมือถือ

ให้เพิ่ม <link> ใน <head> ของทุกไฟล์:

<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css">

สรุป

🔥 ระบบรับออเดอร์ผ่านมือถือ

  • ลูกค้า สั่งอาหารผ่านมือถือ โดยสแกน QR Code
  • พนักงาน เห็นออเดอร์แบบเรียลไทม์ และ อัปเดตสถานะ
  • ใช้ PHP + MySQL + Bootstrap รองรับการใช้งานมือถือ

,


ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *