2015-05-09 29 views
0

當我向購物車添加第二個項目,第一個項目將被取代
這是我的代碼(cart.php)如何將多個項目添加到購物車與cookies方法

<?php 
    include"connect.php"; 
?> 

<?php 
    $total=0; 
$variety = $quantity = $bran = ""; 

if(isset($_COOKIE['cart'])) 
{ 
$cookie = $_COOKIE['cart']; 
$cookie = stripslashes($cookie); 
$savedCardArray = json_decode($cookie, true); 
foreach ($savedCardArray as $key => $value) { 
    $variety=$savedCardArray[$key][0]; 
    $quantity=$savedCardArray[$key][1]; 
    $bran=$savedCardArray[$key][2]; 
    $total = $quantity*998; 
    setcookie('total', $total); 
} 

} 
?> 

的cart_update頁下面給出

<?php 
class CartUpdate 
{ 

    /** 
    * Initialize the Cart. 
    * @return void 
    */ 
    public function __construct() { 

     if(isset($_COOKIE['cart'])) { 

      $cookie = $_COOKIE['cart']; 
      $cookie = stripslashes($cookie); 
      $savedCardArray = json_decode($cookie, true); 

     } 
    } 


    function add() 
    { 
     $variety = test_input($_POST["variety"]); 
     $rice_type = test_input($_POST["rice_type"]); 
     $quantity = test_input($_POST["quantity"]); 
     $bran = test_input($_POST["bran"]); 
     $items[]=array($variety,$quantity,$bran,$rice_type); 
     $json = json_encode($items);  
     setcookie('cart', $json); 
    } 

我需要在這個餅乾方法的購物車中的所有選擇的項目。 任何人都可以幫助我?

回答

0

我的PHP現在有點生疏,但似乎每次您在Cart對象上調用add()方法都會重寫您的cookie。在您的購物車構造函數中,您將cookie內容讀入本地var $savedCardArray(打字錯誤?),但是您在add()方法中使用本地var $items,向其中添加新元素並保存cookie。

我建議重構這段代碼。首先有什麼特別的原因叫做CartUpdate?只需將它命名爲Cart。在構造函數中將cookie讀入實例變量中,所以一旦你從cookie中讀取了內容,你就可以在Cart實例的其他方法中訪問它。您還可以提供get()方法來返回購物車中的商品數組,以及將計算總價的total()方法。

+0

你能否編輯上面的代碼? –

+0

對不起,沒有編輯你的代碼,我沒有長時間使用PHP,也不想爲了讓語法正確而尋找東西:)我更新了我的答案,爲您提供了更多的見解。 –

相關問題