2011-05-04 264 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