在現(xiàn)代社會(huì)中,點(diǎn)餐系統(tǒng)已成為大眾餐飲業(yè)中不可或缺的組成部分,人們不僅要求食品的品質(zhì)口感,也需要在配送過(guò)程中能夠方便追蹤餐品的配送日期、時(shí)間以及送達(dá)地點(diǎn)等信息。MySQL 數(shù)據(jù)庫(kù)具有良好的可擴(kuò)展性和穩(wěn)定性,廣泛應(yīng)用于各行各業(yè),本文將介紹如何利用 MySQL 數(shù)據(jù)庫(kù)實(shí)現(xiàn)點(diǎn)餐系統(tǒng)的配送跟蹤功能,以滿(mǎn)足用戶(hù)對(duì)配送的需求。
一、數(shù)據(jù)表設(shè)計(jì)
在 MySQL 數(shù)據(jù)庫(kù)中,數(shù)據(jù)表是組織和存儲(chǔ)數(shù)據(jù)的基本單位。針對(duì)點(diǎn)餐系統(tǒng)配送跟蹤功能,我們可以設(shè)計(jì)以下數(shù)據(jù)表:
- 訂單表(orders)
字段名 | 數(shù)據(jù)類(lèi)型 | 長(zhǎng)度 | 說(shuō)明 |
---|---|---|---|
id | int | 10 | 訂單編號(hào) |
customer | varchar | 20 | 客戶(hù)姓名 |
phone | varchar | 11 | 客戶(hù)手機(jī)號(hào) |
address | varchar | 100 | 配送地址 |
status | int | 1 | 訂單狀態(tài)(0:未送達(dá),1:已送達(dá)) |
create_time | datetime | 0 | 下單時(shí)間 |
delivery_time | datetime | 0 | 配送時(shí)間 |
total_price | decimal | 10, 2 | 訂單總價(jià) |
- 餐品表(dishes)
字段名 | 數(shù)據(jù)類(lèi)型 | 長(zhǎng)度 | 說(shuō)明 |
---|---|---|---|
id | int | 10 | 餐品編號(hào) |
name | varchar | 20 | 餐品名稱(chēng) |
price | decimal | 10, 2 | 餐品單價(jià) |
category | varchar | 20 | 餐品類(lèi)別 |
- 訂單詳情表(order_details)
字段名 | 數(shù)據(jù)類(lèi)型 | 長(zhǎng)度 | 說(shuō)明 |
---|---|---|---|
id | int | 10 | 詳情編號(hào) |
order_id | int | 10 | 訂單編號(hào) |
dish_id | int | 10 | 餐品編號(hào) |
quantity | int | 3 | 餐品數(shù)量 |
subtotal | decimal | 10, 2 | 餐品小計(jì) |
二、數(shù)據(jù)庫(kù)操作
- 數(shù)據(jù)庫(kù)連接
使用 PHP 語(yǔ)言連接到 MySQL 數(shù)據(jù)庫(kù):
// 數(shù)據(jù)庫(kù)連接參數(shù) $host = 'localhost'; // 數(shù)據(jù)庫(kù)主機(jī)地址 $user = 'root'; // 數(shù)據(jù)庫(kù)用戶(hù)名 $password = ''; // 數(shù)據(jù)庫(kù)密碼 $dbname = 'order_system'; // 數(shù)據(jù)庫(kù)名稱(chēng) // 連接數(shù)據(jù)庫(kù) $conn = mysqli_connect($host, $user, $password, $dbname); if (!$conn) { die('數(shù)據(jù)庫(kù)連接失?。? . mysqli_connect_error()); }
登錄后復(fù)制
- 查詢(xún)訂單信息
實(shí)現(xiàn)點(diǎn)餐系統(tǒng)配送跟蹤功能的關(guān)鍵是查詢(xún)訂單信息,并在頁(yè)面上展示配送狀態(tài)信息。以下代碼查詢(xún)所有已配送的訂單信息:
// 查詢(xún)已配送的訂單信息 $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);
登錄后復(fù)制
- 更新訂單狀態(tài)
當(dāng)訂單的配送狀態(tài)發(fā)生變化時(shí),需要及時(shí)更新數(shù)據(jù)庫(kù)中訂單的狀態(tài)。以下代碼用于更新訂單的狀態(tài)為“已送達(dá)”:
// 更新訂單狀態(tài) $order_id = $_POST['order_id']; // 獲取訂單編號(hào) $sql = "UPDATE orders SET status = '1' WHERE id = $order_id"; if (mysqli_query($conn, $sql)) { // 更新成功 echo '1'; } else { // 更新失敗 echo '0'; }
登錄后復(fù)制
三、頁(yè)面實(shí)現(xiàn)
- 訂單列表頁(yè)面
在點(diǎn)餐系統(tǒng)的后臺(tái)管理頁(yè)面中,我們可以展示所有已經(jīng)配送的訂單信息,并包含操作按鈕以進(jìn)行訂單狀態(tài)的修改。以下代碼展示已配送訂單列表的 HTML 代碼:
<table> <thead> <tr> <th>訂單編號(hào)</th> <th>客戶(hù)姓名</th> <th>客戶(hù)手機(jī)號(hào)</th> <th>配送地址</th> <th>訂單總價(jià)</th> <th>下單時(shí)間</th> <th>配送日期</th> <th>配送時(shí)間</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'] . '">已送達(dá)</button></td>'; echo '</tr>'; } ?> </tbody> </table>
登錄后復(fù)制
- 訂單狀態(tài)更新
當(dāng)操作員點(diǎn)擊“已送達(dá)”按鈕時(shí),需要向服務(wù)器發(fā)送 AJAX 請(qǐng)求以更新訂單狀態(tài),并在頁(yè)面上動(dòng)態(tài)地展示訂單狀態(tài)的變化。以下代碼演示 AJAX 請(qǐng)求的 JavaScript 代碼:
// 訂單狀態(tài)更新 $(document).on('click', '.delivered-btn', function () { var order_id = $(this).attr('data-order-id'); // 獲取訂單編號(hào) $.ajax({ url: 'update_order_status.php', method: 'POST', data: {order_id: order_id}, success: function (res) { if (res === '1') { // 更新成功 alert('訂單狀態(tài)已更新!'); location.reload(); // 刷新頁(yè)面 } else { // 更新失敗 alert('訂單狀態(tài)更新失敗!'); } } }); });
登錄后復(fù)制
四、總結(jié)
利用 MySQL 數(shù)據(jù)庫(kù)實(shí)現(xiàn)點(diǎn)餐系統(tǒng)的配送跟蹤功能的過(guò)程涉及到數(shù)據(jù)庫(kù)表的設(shè)計(jì),以及對(duì)訂單信息的查詢(xún)和更新。與此同時(shí),我們還需要在頁(yè)面上展示訂單信息并實(shí)現(xiàn)動(dòng)態(tài)的訂單狀態(tài)更新。以上提供了一個(gè)基本的實(shí)現(xiàn)思路,各位讀者可以根據(jù)實(shí)際需求和業(yè)務(wù)邏輯適當(dāng)進(jìn)行拓展和修改。