2014-05-13 125 views
-2
$product_code = $_POST['cart_id']; 
$temp_quantity = $_POST['quantity']; 
$price = $_POST['price']; 

foreach ($_SESSION["products"] as $cart_itm) //loop through session array var 
{       
    if($cart_itm["id"] == $product_code){ //the item exist in array 

     $product[] = array('name'=>$cart_itm["name"], 
          'id'=>$cart_itm["id"], 
          'qty'=>$temp_quantity, 
          'price'=>$cart_itm["price"]); 
     $found = true; 

    }else{ 

     //item doesn't exist in the list, just retrive old info and prepare array for session var 

     $product[] = array('name'=>$cart_itm["name"], 'id'=>$cart_itm["id"], 'qty'=>$temp_quantity, 'price'=>$cart_itm["price"]); 

    } 

    $_SESSION["products"] = $product; 

} 

該代碼完全適用於單一的產品,以增加它的數量,但是當它需要增加在車衆多產品中的一種產品的數量則增加了整個產品的數量使用會話,以增加項目數量。它會創建一個新的會話,因此如何通過糾正相同的代碼來增加代碼中許多產品中的任何一個?如何在PHP

+0

,如果你只是有一個會話問題,呼籲開始在session_start()... [在session_start(HTTP: //de2.php.net/manual/de/function.session-start.php)(檢查會話是否先存在),但我認爲你在$ _POST傳遞的數據有問題 – Dwza

回答

0

,如果你只是有一個會話問題,呼籲開始在session_start()...

Session_start

(檢查是否會首先存在)

,但我想這個問題會在這裏...

$_SESSION['products'] = $product; 

一直覆蓋會話變量!所以即使你有100個產品,您將得到百達最後一個

試試這個

foreach ($_SESSION["products"] as $cart_itm) //loop through session array var 
{       
    if($cart_itm["id"] == $product_code){ //the item exist in array 

     $product[] = array('name'=>$cart_itm["name"], 
          'id'=>$cart_itm["id"], 
          'qty'=>$temp_quantity, 
          'price'=>$cart_itm["price"]); 
     $found = true; 

    }else{ 

     //item doesn't exist in the list, 
     //just retrive old info and prepare array for session var 

     $product[] = array('name'=>$cart_itm["name"], 
          'id'=>$cart_itm["id"], 
          'qty'=>$temp_quantity, 
          'price'=>$cart_itm["price"]); 

    } 

    $products[] = $product;    //<-- Changed (tempArray) 

} 

$_SESSION["products"] = $products;  //<-- Temp to session