2017-11-23 1 views
0

私はチェックアウトする前にユーザーの製品選択を保存するセッション変数を使用してPHPでショッピングカートを作成しています。ほとんどの場合、それは動作します。問題は、ユーザーが選択した場合は、ユーザが異なるサイズで同じ項目を選択した場合は、「small」のサイズは「赤」のシャツは、それがショッピングカートで同じ名前のPHPでセッション配列変数を使用するにはどうすればいいですか?

'products' => 
    array(size=1) 
     'code' => 
      array(size=5) 
       'product_size' => string 'Small' 
       'quantity' => string '1' 
       'product_code' => string 'sku' 
       'name' => string 'shirt red' 
       'price' => string '25'  

しかしとしてセッション変数に追加します言うことができますということです以前のセッション変数を同じコードで上書きします。

以前のセッション変数を上書きせずに、異なるサイズの同じアイテムをユーザーが取得できるようにするにはどうすればよいですか?

+1

短い答え、はい、長い答えは – madalinivascu

+0

おそらく、各製品コードで配列対文字列を使用する必要があります。 – Rasclatt

+0

あなたはそれを配列にラップする必要があります。 '[products => ['shirt product' => [[redshirt]、[blueshirt]]]' – ArtisticPhoenix

答えて

1

私はものを持つアイテムはアイテムごとに異なっている。この

['products' => [ 
    $sku => [ //the actual sku value, not literally sku 
     'price' => '25', //if it's common (total = price x total_qty), if not put a total here 
     //'total_price' => 70 
     'total_qty' => 3, 
     'name' => string 'shirt red' //if its common 
     'items' => [ 
      0 => [ 
       'size' => 'Small' 
       'quantity' => '1'    
       //'price' => 20 
      ], 1 => [ 
       'size' => 'Medium' 
       'quantity' => '2'    
       //'price' => '25' 
      ] 
     ] //end items 
    ]//end sku 
] 

基本的には巣のようにそれを構築します。サイズに共通でない場合は、コメント形式で価格を付けます。

それはこれが少ない「柔軟」が、重複するアイテムを最小限にする方が簡単です。この

..... 
    'items' => [ 
     'Small' => [ 
      'quantity' => '1'    
      //'price' => 20 
     ], 'Medium' => [ 
      'quantity' => '2'    
      //'price' => '25' 
     ] 
    ] 

などの主な違いである場合にも、サイズの項目をキー入力できます。 itemsの配列キーは、さらにネストされた 'サイズ'キーを確認する方が簡単です。

実際の構造はあなたとあなたのユースケースによって異なりますが、アイテムに最も簡単にアクセスできるように構築しますが、すべての製品を収容できるほど柔軟です。

最後の例では、サイズと数量が異なる唯一のものであれば、ネストされた配列を削除することもできます。

あなたの配列には、この明らかなエラーがあります。

product_color' => string 'Small' 
+0

どうすれば購入完了のためにPayPalに渡しますか?私はショッピングカートを作るのが初めてで、本当にやりたいとは思っていませんでしたが、私のクライアントは、私がそれを構築する人であることを主張しました。私は挑戦を完了することができると感じる。これは私が[ここ](https://www.sanwebe.com/2013/07/php-multiple-items-shopping-cart-integration-with-paypal)を使用している例です –

+0

paypalはおそらくどのサイズを気にしませんそれは量と価格だけです。しかし、それはあなたが使用している 'Paypal' APIに依存します。あなたはたぶん傾けることができ、あなたのカートはAPIを使ってpaypalに送付しますが、反復する必要があります。正直なところ私は約6年間で決済をセットアップしていない。ほとんどの場合、WooCommerceなどのようなものを使って行うことができる。 – ArtisticPhoenix

+0

@SteveC。 - あなたのカートとPayPalが知る必要があるものは、2つの異なるものです。顧客の「領収書」がpaypalまたはあなたから得られるかどうかによって異なります。最低額はpaypalなので、合計金額で顧客に請求してほしい。 – ArtisticPhoenix

1

名前、スキュー、タイプなどの属性をキーとし、製品IDをキーとして保持します。

[ 
'products' => [ 
    'pid123' => [ 
     [ 
      'name' => 'abc', 
      'sku' => 'sku-abc', 
      'types' => [ 
       [ 
        'colour' => 'red', 
        'size' => '42', 
        'qty' => 1 
       ], 
       [ 
        'colour' => 'red', 
        'size' => '40', 
        'qty' => 2 
       ] 
      ] 
     ] 
    ], 
    'pid789' => [ 
     [ 
      'name' => 'xyz', 
      'sku' => 'sku-xyz', 
      'types' => [ 
       [ 
        'colour' => 'red', 
        'size' => '42', 
        'qty' => 1 
       ], 
       [ 
        'colour' => 'red', 
        'size' => '40', 
        'qty' => 2 
       ] 
      ] 
     ] 
    ] 
]]; 

タイプリストには、さまざまなサイズ、色、数量の情報が含まれます。

関連する問題