我创建了一个使用会话存储产品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