【发布时间】:2011-05-19 17:43:51
【问题描述】:
我总是在网上冲浪和堆栈溢出来寻找答案,我只是在找不到答案的时候问。
我已经使用 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 和一般编程的新手;我从 1 个月前开始学习。
编辑:问题出在 javascript 代码上,禁用 javscript 后,购物车运行良好,启用 javascript 时,当我添加一个项目时,我会在 qty 中得到 2 而不是 1,如果我删除该项目并将其添加到购物车再次将数量从 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;
});
【问题讨论】:
-
请更仔细地解释您的问题,我无法理解这一点“当用户添加他刚刚删除的相同项目时的问题 id,当他添加该项目时,该项目的数量变为 4” !
-
假设用户刚刚进入网站并且会话变量为空,然后用户将商品添加到购物车,该商品的数量将变为 1,但随后他将其从购物车中删除,但那么如果他再次添加它,数量将变为 2 而不是 1
-
您是否在两个 php 文件中使用相同的会话处理代码?删除后是否保存会话状态?
-
我的问题中的所有 php 代码都在一个 php 文件中。