Mysql
在 php mysqli 的訂單表中為訂購的產品生成從 0 到依此類推的發票編號
我正在嘗試在訂單表中生成發票編號,例如,如果使用者選擇 1 個或多個產品並將其添加到購物車然後下訂單,則發票編號應該在我們的訂單表中根據產品在多行中的 1 個訂單相同。我正在使用函式
mt_rand();
,但它隨機生成。我想生成從 0 到等等的數字。比如,1、2、3、4、5、6、7等等。我也試過這個來生成發票號碼。 $i++
$squery = "SELECT * FROM cart WHERE user_id = '$user_id'"; $sresult = $this->db->select($squery); if($sresult){ $totalPrice = 0; $i = 0; while($svalue = $sresult->fetch_assoc()){ $i++; $pro_id = $svalue['pro_id']; $pro_name = $svalue['pro_name']; $quantity = $svalue['quantity']; $pro_price = $svalue['pro_price'] * $quantity; $pro_image = $svalue['pro_image']; $query = "INSERT INTO orders(user_id, pro_id, invoice_no, pro_name, status, date) " . "VALUES('$user_id', '$pro_id', '$i', '$pro_name', 'processing', NOW())"; $result = $this->db->insert($query); if($result){ header("location: orders-list.php"); } else { $msg = "<div class='alert alert-danger'>Something's went wrong. Please try again.</div>"; return $msg; } } return true; }
但它不會在 1 個訂單的多個訂購產品行中插入相同的數字。請幫助我如何生成從 0 到等等的發票編號。
我將使用 MySQL 數據庫使用自填充
AUTO_INCREMENT
整數列為您計算訂單號。將您的訂單表分成兩個不同的表。一個用於訂單頂行詳細資訊(例如訂單號、客戶詳細資訊),第二個用於訂單詳細資訊(項目、數量、項目 ID 等)。
這樣您就可以在第一個表中插入一行來“創建”訂單。然後您可以查詢數據庫以獲取此訂單的 OrderNumber。然後使用它來填充包含訂單詳細資訊的表格。
這裡有一個非常粗略的例子。
然後,您可以使用此查詢獲取訂單 ID
select OrderNumber from Orders where CustomerID = 57 order by OrderDate DESC limit 1;
並使用此獲取所有訂單項目:
select * from OrderDetails where ordernumber = 1;
要在一個請求中獲取所有資訊,假設您有 OrderNumber,可以這樣完成:
Select o.OrderNumber ,o.CustomerID ,o.BillingAddressID ,o.OrderDate ,o.OrderStatus ,od.pro_id ,od.pro_name from Orders o INNER JOIN OrderDetails od on o.OrderNumber = od.OrderNumber where o.OrderNumber = 1
在不了解您確切的程式碼工作流程和客戶旅程的情況下,很難說什麼最有效。你必須弄清楚這一點。
我絕對建議您閱讀有關規範化數據的內容,以便您可以根據需要創建最佳資料結構。