如何更新购物车中商品的数量?

时间:2018-03-12 11:59:07

标签: php html

我创建了一个使用会话存储产品ID的购物车,我可以将商品添加到购物车,但我现在想要使用会话变量更新数量,会话变量根据产品ID跟踪数量。

我将产品存储在一个数组中,就像这样。

$products = array(
    array("name" => "Sledgehammer", "price" => 125.75),
    array("name" => "Axe", "price" => 190.50),
    array("name" => "Bandsaw", "price" => 562.13),
    array("name" => "Chisel", "price" => 12.90),
    array("name" => "Hacksaw", "price" => 18.45),
);

以下是我目前添加到购物车的方式。

    $pid = (isset($_GET['pid'])) ? $_GET['pid']: "";
    if($pid != "")
    {
        if($_SESSION['shoppingCart'] == "")
        {
            $_SESSION['shoppingCart'] = array($products[$pid]); 
            $_SESSION['quantity'] = array();        
        }
        else if($_SESSION['shoppingCart'] != "")
        {

            $copyCart = $_SESSION['shoppingCart'];
            if(array_key_exists($pid, $copyCart))
            {
                //increase quantity
                $_SESSION['quantity'][$pid]++;  
            }
            else 
            {
                //new item
                array_push($_SESSION['shoppingCart'], $products[$pid]);
            }
        }
    }

然后我收到要在购物车中显示的数量。

if($_SESSION['shoppingCart'] != '') 

{

foreach($_SESSION['shoppingCart'] as $key => $value)
{   
    $name = $value['name'];
    $price = $value['price'];
    if(empty($_SESSION['quantity'][$key]))
    {
        $_SESSION['quantity'][$key] = 1;
        $qty = $_SESSION['quantity'][$key];
    }
    else
    {
        $qty = $_SESSION['quantity'][$key]; 
    }

    //new element
    echo "<tr><td>".$name."</td><td>".$price."</td><td>".$qty."</td></tr>";
    echo "<td><a href='?action=removeItem&pid=".$key."'>Remove from Cart</a></td>";     
}

}

如果我首先尝试在产品列表中添加最后一个项目,则每次添加该项目作为新项目,然后在添加4次之后更新其数量。请注意,产品列表中只有5个项目。问题在于,每次根据数组中的位置将项目添加为新项目。第二个项目将在更新数量之前先添加3次,然后第三个项目将在更新前添加两次,依此类推。但是,产品列表中的第一项完美地添加了。

我想每次将商品添加到购物车时更新数量。

提前致谢:D

0 个答案:

没有答案