簡體   English   中英

如何在數據庫中為復雜的購物車存儲值

[英]How to store values in the database for a complex shopping cart

我正在使用一種有點復雜的方式將產品存儲在購物車中的購物車。

用戶可以在購物車中添加的每種產品都有一個如下表:

在此輸入圖像描述

用戶在此表中輸入指定尺寸和顏色的數量。 將這些值存儲在數據庫表中以便以后可以輕松獲得並顯示它們的最佳方法是什么?

我正在使用PHP和MySQL數據庫。

現在我的桌子看起來像波紋管,但是當有人要求每種顏色超過一種尺寸時,我很難獲取值。

CREATE TABLE IF NOT EXISTS `site_platform_cart` (
  `cart_id` int(10) unsigned NOT NULL auto_increment,
  `cart_product_id` int(10) unsigned NOT NULL,
  `cart_product_name` varchar(256) collate latin1_general_ci NOT NULL,
  `cart_product_photo` varchar(256) collate latin1_general_ci NOT NULL,
  `cart_product_color_name` varchar(128) collate latin1_general_ci NOT NULL,
  `cart_product_color_image` varchar(128) collate latin1_general_ci NOT NULL,
  `cart_product_color` tinyint(4) NOT NULL,
  `cart_product_size` tinyint(2) NOT NULL,
  `cart_product_quantity` tinyint(3) unsigned NOT NULL,
  `cart_product_price` varchar(12) collate latin1_general_ci NOT NULL,
  `cart_date` date NOT NULL,
  `cart_user_id` int(10) unsigned NOT NULL,
  PRIMARY KEY  (`cart_id`)
) ENGINE=MyISAM

謝謝。

這就是我要做的:

在數據庫中為每種顏色/尺寸組合添加一個新行。 所以像這樣:

INSERT INTO chart (user_id,item_id,color,size,quantity,cart_date) VALUES (.....

您也可以在$_SESSION添加圖表項目,這可能是一個更好的主意。 這樣您的數據庫不會受到污染

我將這些數據成對歸一化。 在用戶欄中列出產品,顏色,尺寸和訂購數量。 您發布的UI上的每個方塊在數據庫中都是一行。

這樣很靈活,因為您可以輕松添加更多產品,顏色,尺寸等。查詢用戶,產品,顏色等都非常容易。

您的購物車只不過是銷售訂單的代表,您應該記住這一點。 您至少需要兩個表來表示一個銷售訂單:一個包含有關整個訂單的信息,另一個包含有關該訂單所有行的信息。

希望您有某種“項目”表,並且希望每個項目鍵對於每種顏色/尺寸組合都是不同的(換句話說,每種顏色/尺寸組合都是單獨的產品)。

如果是這樣,只需像在其他任何商店中一樣,將商品編號和數量存儲在訂單的行表中即可。

沒有最好的辦法。 我將使用存儲所有可能顏色的表。 第二張表存儲所有可能的大小。 三階表將包含數量以及對尺寸和顏色表的引用。

好的,在仔細考慮您要在此處實現的目標之后,我將投入兩分錢。

我認為,最緊迫的問題是您設計數據庫的方式。 之前我不得不處理類似的問題,最終用作解決方案的是這樣的:

table: Colours
    ColourID* | ColourDescription

table: Sizes
    SizeID* | SizeDescription

table: GenericItem
    GenericID* | Item Description | Price | Etc

table: Item
    ItemID* | ParentItem | SizeID | ColourID | AvailableStock | Etc

ColoursSizes表存儲了產品范圍內可用的每種尺寸和顏色。 GenericItem表存儲您庫存的每種產品。 例如,Joe Bloggs V領T恤。 最后,“ Item表存儲每個唯一的項目-例如:大紅色Joe Bloggs V領T恤。 您為其指定了唯一的項目ID,並且可以輕松地從GenericItem表中引用其他信息。

現在,就購物車而言,您可以有如下表格:

table: Cart
    CartID* | CartUserID | CartDate | Etc

該表將保存每個特定購物車的信息。 現在,根據Topener的答案,您將分別保存每個購物車行的信息:

table: CartLine
    CartLineID* | CartID | ItemID | Quantity | Etc

這樣,您可以使數據更加規范化和易於訪問,並允許您將每個購物車存儲在數據庫中。

要檢索此數據,您需要做的就是將CartID存儲在$_session並使所有查詢源於此。 例如,重新顯示訂單行: SELECT * FROM CartLine WHERE CartID = $_SESSION['CartID']

要現在顯示網格,您需要做的就是基於SELECT * FROM Item WHERE ParentItem = 'GenericID'類的對象創建一個數組。 在此示例中,我假設您已經將通用商品的ID作為變量存儲在頁面上,以顯示有關該商品的所有信息。 然后,您可以使用那里的信息將每個文本框映射到數組的索引。

希望這將為您指明正確的方向。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM