<?php
if(isset($_GET["product1"]) && $_GET["product1"] == "Add"){
$_SESSION['cart']['product1'] = $_SESSION['pricebook']['product1'];
header('Location: cart.php?');
}
if(isset($_GET["product2"]) && $_GET["product2"] == "Add"){
$_SESSION['cart']['product2'] = $_SESSION['pricebook']['product2'];
header('Location: cart.php?');
}
?>
我试图允许用户将多个产品添加到购物车,但每次选择添加按钮时,阵列(使用print_r($_SESSION['cart']
检查)都会更改阵列中的产品,而不是向阵列添加其他产品。
非常欢迎任何帮助/建议!
答案 0 :(得分:0)
array_push($_SESSION['cart'], $_SESSION['pricebook']['product1']);
http://www.php.net/manual/en/function.array-push.php
您的$_SESSION['cart']
是一个多维数组。你现在拥有它的方式$_SESSION['cart']['product1']
是$_SESSION['cart']
数组的一个元素,你试图修改它。修改$_SESSION['cart']
而不是向其添加项目,而不是购物车内的项目。
答案 1 :(得分:0)
我不确定我理解你的方法,但你需要考虑改变这个&#39; productX&#39;处理动态内容的方式。
我在我的eshop插件中所做的是:(简化以满足您的代码)
<?php
// if user added the product named 'product1' by etc. a specific product page
if(isset($_GET["product1"]) && $_GET["product1"] == "Add"){
if (!isset($_SESSION['cart'][1])) { $_SESSION['cart'][1] = array("quantity"=>0); }
$_SESSION['cart'][1]["quantity"] = $_GET["product1_quantity"];
header('Location: cart.php?');
}
?>
虽然更好的方法应该是这样的:
<?php
if (isset($_GET["product"]) && $_GET["product"]=="Add") {
$pid = $_GET["product_id"]; // this is one you should add to target the product
$quantity = $_GET["product_quantity"]; // also, the quantity coming from client
if (!isset($_SESSION['cart'][ $pid ])) { $_SESSION['cart'][ $pid ] = array("quantity"=>0); }
$_SESSION['cart'][ $pid ]["quantity"] = $quantity; // store the new quantity
header('Location: cart.php?');
}
?>
关于定价,您应该考虑每个添加产品的数量(通过for循环等)。 不要将价格存入会话,因为他们已为您所知。