在現代社會中,點餐系統已成為大眾餐飲業中不可或缺的組成部分,人們不僅要求食品的品質口感,也需要在配送過程中能夠方便追踪餐品的配送日期、時間、送達地點等資訊。 MySQL 資料庫具有良好的可擴展性和穩定性,廣泛應用於各行各業,本文將介紹如何利用 MySQL 資料庫實現點餐系統的配送追蹤功能,以滿足使用者對配送的需求。
一、資料表設計
在 MySQL 資料庫中,資料表是組織和儲存資料的基本單位。針對點餐系統配送追蹤功能,我們可以設計以下資料表:
欄位名稱 | 資料型別 | 長度 | 說明 |
---|---|---|---|
#id | ##int#10 | 訂單編號 | |
#varchar | 20 | 客戶名稱 | |
varchar | 11 | #客戶手機號碼 | |
varchar | 100 | 配送位址 | |
int | 1 | 訂單狀態(0:未送達,1:已送達) | |
datetime | 0 | 下單一時間 | |
datetime | 0 | 配送時間 | |
decimal | 10, 2 | 訂單總價 |
資料型別 | 說明 | ||
---|---|---|---|
#id | |||
10 | 餐商品編號 | name | |
20 | 餐點名 | #price | |
10, 2 | 餐單價 | category |
訂單詳情表(order_details) | #欄位名稱 | ||
---|---|---|---|
說明 | id | ||
10 | #詳情編號 | order_id | |
10 | 訂單編號 | ##dish_id | int |
餐點編號 | #quantity | int | |
餐點數量 | subtotal | decimal |
餐品小計
// 数据库连接参数 $host = 'localhost'; // 数据库主机地址 $user = 'root'; // 数据库用户名 $password = ''; // 数据库密码 $dbname = 'order_system'; // 数据库名称 // 连接数据库 $conn = mysqli_connect($host, $user, $password, $dbname); if (!$conn) { die('数据库连接失败!' . mysqli_connect_error()); }
// 查询已配送的订单信息 $sql = "SELECT o.*, SUM(d.price * od.quantity) AS total_price FROM orders o LEFT JOIN order_details od ON o.id = od.order_id LEFT JOIN dishes d ON od.dish_id = d.id WHERE o.status = '1' GROUP BY o.id ORDER BY o.delivery_time DESC"; $result = mysqli_query($conn, $sql);
更新訂單狀態
// 更新订单状态 $order_id = $_POST['order_id']; // 获取订单编号 $sql = "UPDATE orders SET status = '1' WHERE id = $order_id"; if (mysqli_query($conn, $sql)) { // 更新成功 echo '1'; } else { // 更新失败 echo '0'; }
<table> <thead> <tr> <th>订单编号</th> <th>客户姓名</th> <th>客户手机号</th> <th>配送地址</th> <th>订单总价</th> <th>下单时间</th> <th>配送日期</th> <th>配送时间</th> <th>操作</th> </tr> </thead> <tbody> <?php while ($row = mysqli_fetch_assoc($result)) { echo '<tr>'; echo '<td>' . $row['id'] . '</td>'; echo '<td>' . $row['customer'] . '</td>'; echo '<td>' . $row['phone'] . '</td>'; echo '<td>' . $row['address'] . '</td>'; echo '<td>' . $row['total_price'] . '</td>'; echo '<td>' . $row['create_time'] . '</td>'; echo '<td>' . date('Y-m-d', strtotime($row['delivery_time'])) . '</td>'; echo '<td>' . date('H:i', strtotime($row['delivery_time'])) . '</td>'; echo '<td><button class="delivered-btn" data-order-id="' . $row['id'] . '">已送达</button></td>'; echo '</tr>'; } ?> </tbody> </table>
當操作員點選「已送達」按鈕時,需要傳送AJAX請求以更新訂單狀態,並在頁面上動態地顯示訂單狀態的變化。以下程式碼示範AJAX 請求的JavaScript 程式碼:
// 订单状态更新 $(document).on('click', '.delivered-btn', function () { var order_id = $(this).attr('data-order-id'); // 获取订单编号 $.ajax({ url: 'update_order_status.php', method: 'POST', data: {order_id: order_id}, success: function (res) { if (res === '1') { // 更新成功 alert('订单状态已更新!'); location.reload(); // 刷新页面 } else { // 更新失败 alert('订单状态更新失败!'); } } }); });
以上是MySQL 實現點餐系統的配送追蹤功能的詳細內容。更多資訊請關注PHP中文網其他相關文章!