2011-05-04 263 views
1

當用戶單擊添加按鈕時,產品ID將存儲到會話數組中。購物車會話陣列

見下文代碼:

Array 
(

    [storeID] => 123 
    [10] => Array 
     (
      [quantity] => 1 
      [product_id] => 2 
      [extras_id] => Array 
       (
       ) 

     ) 

    [20] => Array 
     (
      [quantity] => 12 
      [product_id] => 2 
      [extras_id] => Array 
       (
        8 
       ) 

     ) 
) 

正如你可以看到10和20從PRODUCT_ID = 2

用戶option_id可以從特定的產品選擇的選項數目。

用戶可以選擇的選項

這是陣列設計好或怎麼能夠改善羣衆演員(或沒有)?

實施例:

Product (2): Burger 
- Option (10): Large (User not selected any extra) 
- Option (20): Small (User selected coke(8) as extra) 

用戶選擇的ID 10和20,用於漢堡。

回答

1

我沒有看到一個與它的問題,但你可以得到更多的「組織」,這樣說:

Array 
(
    [123] => array(
     [2] => array(
      [10] => array(
       [quantity] => '', 
       [extras] => '' 
      ), 
      [20] => array(
       [quantity] => '', 
       [extras] => '' 
      ) 
     )  
    ) 
) 

不過這只是我的意見,我的方式去思考。

1

如果產品3也有選件10,該怎麼辦?

我會去使用產品的關鍵,並添加數量,選項和額外的數組的子。

這種設置確實假定您不能再多次添加同一產品,即使額外的不匹配。另一張海報建議增加extras/options/productid的組合,這很好。如果是這樣的話,請注意他:)。

Array 
(
    'cart' => array(
     'storeid' => 123, 
     'products' => array(
      2 => array(
       'quantity' => 2, 
       'options' => array(10, 20), 
       'extras' => array(2) 
      ), 
      3 => array(
       'quantity' => 12, 
       'options' => array(150, 20), 
       'extras' => array(1, 7) 
      ) 
     )  
    ) 
) 
+0

這不會工作,由於數據庫設計。 – user622378 2011-05-04 18:18:40

+0

剛剛看到更新,謝謝。 – user622378 2011-05-04 18:20:59

+0

我認爲演員看起來不對?選項10可以有額外的選項,但不是選項20. – user622378 2011-05-04 18:26:44

0

我喜歡什麼是存儲產品的格式如下:

Array 
(
    [md5 hash of (product id + serialized array of selected options)] => Array 
     (
      'qty' => 10 
      'title' => 'Product XYZ' 
      'price' => 49.99 
      'options' => Array 
       (
        ... 
       ) 
     ) 
) 

這給了它自己的「身份證」每車項目,很容易讓你修改每個車項目數據,如數量, 如果你需要。

編輯:
這是我的購物車的物品數組的樣子一下調例如:
7483f8f0007eb9ef3ddb8d2bff606bd6859d1bb225ba5d16de4d4c23076cfae0是由md5($itemId.serialize($submittedOptions))同時創建MD5哈希值。

Array 
(
    [7483f8f0007eb9ef3ddb8d2bff606bd6] => Array 
     (
      [id] => 3 
      [qty] => 2 
      [price] => 20.00 
      [title] => Product XYZ 
      [data] => Array 
       (
        [photo] => /uploads/media/products/product_xyz.jpg 
        [link] => /product/3-product-xyz/ 
        [sku] => PRODUCT-XYZ 
        [weight] => 10 
        [attributes] => Array 
         (
          ... 
         ) 

       ) 

     ) 

    [859d1bb225ba5d16de4d4c23076cfae0] => Array 
     (
      [id] => 3 
      [qty] => 2 
      [price] => 30.00 
      [title] => Product XYZ 
      [data] => Array 
       (
        [photo] => /uploads/media/products/product_xyz.jpg 
        [link] => /product/3-product-xyz/ 
        [sku] => PRODUCT-XYZ 
        [weight] => 15 
        [attributes] => Array 
         (
          ... 
         ) 

       ) 

     ) 

) 
+0

我不明白這部分:md5散列(產品編號+所選選項的序列化數組)。如果一個選項有額外功能呢? – user622378 2011-05-04 18:22:21

+0

產品不附帶價格,每個選項都有價格。我認爲你的陣列設計是錯誤的。 – user622378 2011-05-04 18:28:42

+0

定義「選項」和「額外」。另外,我正在更新我的答案以提供示例。 – simshaun 2011-05-04 18:32:55