2011-05-04 2 views
1

Lorsque l'utilisateur clique sur le bouton Ajouter, les ID de produit sont stockés dans le tableau de sessions.panier de session du panier d'achat

Voir le code ci-dessous:

Array 
(

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

     ) 

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

     ) 
) 

Comme vous pouvez le voir 10 et 20 est option_id du product_id = 2

L'utilisateur peut sélectionner plusieurs options à partir d'un produit spécifique.

L'utilisateur peut sélectionner les extras (ou sans) de l'option

Est-ce tableau une bonne conception ou comment peut-il être amélioré?

Exemple:

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

utilisateur ID sélectionné 10 et 20 pour hamburger.

Répondre

1

Je ne vois pas de problème avec elle, sauf que vous pouvez obtenir plus « organisé », de cette façon:

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

Mais c'est juste mon opinion et ma façon de penser.

1

Et si le produit 3 a aussi l'option 10?

Je voudrais utiliser des produits comme la clé, et en ajoutant la quantité, les options et les extras d'un sous-ensemble de ce tableau.

Cette configuration suppose que vous ne pouvez pas ajouter le même produit plus d'une fois, même si les extras ne correspondent pas. Une autre affiche suggère d'ajouter une combinaison d'extras/options/productid, ce qui est bien. Si c'est le cas, s'il vous plaît upvote lui :).

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

Cela ne fonctionnerait pas en raison de la conception de la base de données. – user622378

+0

Ahh vient de voir une mise à jour, merci. – user622378

+0

Je pense que les figurants ont l'air faux? L'option 10 peut avoir des extras mais pas l'option 20. – user622378

0

Ce que je préfère est de stocker les produits dans ce format:

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

qui donne à chaque élément de panier, il est propre « id », facilement vous permettant de modifier les données pour chaque élément de panier, comme qté , Si tu as besoin de.

Modifié:
Ceci est un dégrossi exemple de ce que le tableau de mon panier articles ressemble:
7483f8f0007eb9ef3ddb8d2bff606bd6 et 859d1bb225ba5d16de4d4c23076cfae0 sont les deux hash md5 créés par md5($itemId.serialize($submittedOptions)).

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

Je ne comprends pas cette partie: hash md5 de (id produit + tableau sérialisé des options sélectionnées). Et si une option a des extras? – user622378

+0

Le produit ne vient pas avec le prix, chaque option a un prix. Je pense que la conception de votre tableau est tout à fait fausse. – user622378

+0

Définir "option" et "extras".Aussi, je mets à jour ma réponse pour donner un exemple. – simshaun