2013-05-14 92 views
0

我知道我的問題可能非常類似於Stackoverflow中的其他人。我發現了一些類似的問題,但實際上我無法爲我的問題找到正確的解決方案。使用會話遞增購物車項目數量

我正在使用Sessions和ajax-json編寫購物車。 我的產品 結構有點複雜。它的名稱,尺寸,類型,顏色和每種類型和尺寸的具體價格。重點是我不能 增加項目數量,如果名稱,尺寸,類型,顏色和價格是相同的,如果我添加相同的產品。這是我的代碼。我認爲我 寫作是正確的,但我不明白是什麼問題。 實際上,它增加了物品數量,但只增加了一次,當我檢查數組時,物品數量還沒有增加。

$data = json_decode($_POST['jsonData'], true); 
    $pr_type = $data['pr_type']; 
    $pr_size = $data['pr_size']; 
    $pr_link = $data['pr_link']; 
    $pr_color = $data['pr_color']; 
    $pr_price = $data['pr_price']; 

    $products_s = $this->getSession()->get('prof_cart'); 
    $product = array(); 

    if (empty($products_s)) { 
     $products_s = array(); 
    } else { 
     $products_s = $products_s; 
    } 

    $products = Model::factory('Client_Product')->getProductById($pr_link); 
    $type = Model::factory("Client_Product")->getProductTypeByLink($pr_type); 
    $size = Model::factory("Client_Product")->getProductSizeById($pr_size); 
    if ($pr_type != 'undefined') { 
     $product['type'] = $type[0]['title']; 
    } else { 
     $product['type'] = ""; 
    } 
    $isCreate = true; 

    foreach ($products_s as $id) { 
     if ($id['price'] == $pr_price && 
       $id['title'] == $products[0]['title'] && 
       $id['size'] == $size[0]['size'] && 
       $id['type'] == $type[0]['title']) { 
      $id['quant']++; 
      $isCreate = false; 
     } 
    } 

    if ($isCreate) { 
     $product['quant'] = 1; 
     $product['size'] = $size[0]['size']; 
     $product['title'] = $products[0]['title']; 
     $product['price'] = $pr_price;    
     $product['color'] = $pr_color; 
     array_push($products_s, $product); 
    } 

    $sum = 0; 
    foreach ($products_s as $id) { 
     $sum += $id['price'] * $id['quant']; 
    } 

    //echo $sum; 

    echo "<pre>"; 
    var_dump($products_s); 
    echo "</pre>"; 

    $this->getSession()->set('prof_cart', $products_s); 

    $this->getSession()->set('prof_sum', $sum); 
+0

感謝!!!!!!非常感謝,它的效果很好 – 2013-05-14 16:32:22

回答

1

您需要增加主產品數組中的數量,如下所示。

foreach ($products_s as $key => $id) { 
    if ($id['price'] == $pr_price && 
      $id['title'] == $products[0]['title'] && 
      $id['size'] == $size[0]['size'] && 
      $id['type'] == $type[0]['title']) { 
     $products_s[$key]['quant']++; 
     $isCreate = false; 
    } 
} 
+0

謝謝!!!!!!非常感謝,效果很好 – 2013-05-14 16:33:24

+0

歡迎光臨:) – Rikesh 2013-05-14 16:37:13

0

試試這個:

foreach ($products_s as $id) { 
    if ($id['price'] == $pr_price && 
      $id['title'] == $products[0]['title'] && 
      $id['size'] == $size[0]['size'] && 
      $id['type'] == $type[0]['title']) { 
     $id['quant'] = $id['quant']++; 
     $isCreate = false; 
    } 
}