我总是在网上冲浪并堆叠溢出寻找答案,我只是问我何时找不到答案。
我使用jquery和php构建了一个小型购物车。
只有一个我无法弄清楚的错误。
当用户添加项目时,该项目会添加数量1.如果他再次添加相同的项目,则数量将变为2,依此类推。
假设用户选择了一个项目,数量为2。 如果他单击删除按钮一次,该项目的数量将变为1。 这就是我想要的,但如果他再次点击删除按钮,项目就会被删除。
问题是当用户添加他刚删除的相同项目时。当他添加它时,该项目的数量变为4。
以下是添加项目的代码:
@$new = $_POST['item'];
if($new) {
if(!isset($_SESSION['cart'])) {
$_SESSION['cart'] = array();
$_SESSION['items'] = 0;
$_SESSION['total_price'] = '0.00';
}
if(isset($_SESSION['cart'][$new])) {
$_SESSION['cart'][$new]++;
} else {
$_SESSION['cart'][$new] = 1;
}
}
以下是删除项目的代码..
@$remove = $_GET['remove'];
if($remove) {
if(isset($_SESSION['cart'][$remove])) {
$_SESSION['cart'][$remove]--;
foreach ($_SESSION['cart'] as $item => $qty) {
if($qty < 1) {
unset($_SESSION['cart'][$qty]);
unset($_SESSION['cart'][$item]);
}
}
} else {
$_SESSION['cart'][$remove];
}
}
我是php和编程的新手;我在一个月前开始学习。
编辑:问题在于javascript代码,javscript已禁用购物车工作正常,启用javascript时我添加了一个项目,我在qty而不是1中得到2,如果我删除该项目并将其添加到购物车再次将qty从2增加到4,依此类推。 $(".shop_cart").submit(function() {
var data = $(this).serialize();
$.ajax({
type: 'post',
url: 'cart.inc.php',
data: data,
cache: false,
success: function(data) {
$("#cart").html(data);
}
});
return false;
});
这是从购物车代码中删除
$(".remove").click(function() {
var remove = 'remove=' + $(this).attr('id')
$.ajax({
type: 'get',
url: 'cart.inc.php',
cahce: false,
data: remove,
success: function(data) {
$("#cart").html(data);
}
})
return false;
});
答案 0 :(得分:2)
从购物车中移除商品时,您取消了错误的值:
unset($_SESSION['cart'][$remove]);
应该就是您所需要的一切。
} else {
$_SESSION['cart'][$remove];
}
这段代码是您需要从上方进行unset()
调用的地方。就目前而言,这句话什么也没做。