2012-09-04 31 views
1

我正在開發購物車應用程序,我需要使用$ _SESSION存儲購物車物品的幫助。

概念

當放入購物車用戶點擊,下列信息被存儲:產品ID例如5312,產品名稱,產品數量,產品規則(例如顏色:白色,尺寸:中等等)

問題

的問題是,當我保存的項目ID在$ _SESSION條目。我想假設如下:

  • 用戶增加了產品#111項,其顏色爲白色
  • 用戶則增加了2項產品#11的顏色是藍色

如果我救通過商品ID,信息總是會被覆蓋,我想讓每個呼叫/每個添加到購物車都是獨一無二的,因爲我假設他可以添加不同尺寸,不同顏色的同一產品。

我怎麼能過來這樣的問題?

任何想法或輸入非常感謝。

+0

您不想將訂單存儲在會話中,將其存儲在數據庫中,並引用會話和用戶。然而$ _SESSION [] = $ product_array;應該工作 – 2012-09-04 20:51:29

+0

你的意思是$ _SESSION []每次都是唯一的? –

+0

是[]會增加數組 – 2012-09-04 20:53:02

回答

3

你可以用你的SESSION變量做一個多維數組。

$_SESSION['cart']=array(
    $product_id=>array($product_count,$product_options), 
    $product_id=>array($product_count,$product_options), 
); 

或者如果$product_id不是唯一的:

$_SESSION['cart']=array(
    array($product_id,$product_count,$product_options), 
    array($product_id,$product_count,$product_options), 
); 

像這樣的東西,你可以有一個獨特的產品ID作爲數組鍵,然後將計,期權及其他信息你需要。

另一種選擇是爲您的購物車創建一個表格,然後讓會話存儲購物車ID。然後,您只需檢查您的購物車信息的MySQL表。

0

您可以使用產品ID作爲密鑰來存儲陣列。

+0

但是,如果他添加了相同的產品但具有不同的顏色/大小/等等,否則會重複產品ID? –

+0

不,它不會,關鍵是產品ID,它包含與產品的陣列。 – blockhead

0

而不是在會話中存儲產品的購物車項目對象。購物車項目對象將具有對產品(產品ID)的引用以及該項目的任何屬性(如果需要,顏色,數量,不同價格等)。爲每個購物車項目分配一個隨機ID,並且永遠不會遇到覆蓋問題。

相關問題