2014-05-13 127 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