我有一个使用cookies的购物车,您可以通过转到产品详细信息页面并点击添加购物车来添加产品。每次您点击添加时,脚本都需要为购物车中的数量添加+1。我不知道为什么,但数量每次都保持不变。
基本上,问题是:为什么不更新cookie中的数量?
Product.php:
if(isset($_POST['add'])){
if(!empty($_POST['m'])){
if (isset($_COOKIE['cart'])){
$cart = json_decode($_COOKIE['cart'], TRUE, 512, JSON_OBJECT_AS_ARRAY); // if cookie is set, get the contents of it
} else{
$cart = [];// else create an empty cart
}
// append new product and add to cart
$cart[$product['id']] = [];
$cart[$product['id']]['m'] = empty($_POST['m']) ? 1 : $_POST['m'];
if(!empty($cart[$product['id']]['quantity'])){
$cart[$product['id']]['quantity'] += 1;
} else {
$cart[$product['id']]['quantity'] = 1;
}
setcookie('cart', json_encode($cart), time()+3600, '/');
} else {
$error = "U moet minimaal 1m invullen";
}
}
同样在购物车本身,我需要能够修改数量,允许覆盖此值。
shoppingcart.php:
if(isset($_COOKIE['cart'])){
$cart = json_decode($_COOKIE['cart'], TRUE, 512, JSON_OBJECT_AS_ARRAY);
} else {
$cart = [];
}
// dd($cart);
if(isset($_POST['remove'])){
unset($cart[$_POST['item']]);
setcookie('cart', json_encode($cart), time()+3600, '/');
}
$list = $model->selectMultipleById($cart, 'carpet');
答案 0 :(得分:0)
试试这个:
// append new product and add to cart
//first test if you have the id in your cookie. if so: update qty +1
if(!empty($cart[$product['id']])){
$cart[$product['id']]['quantity'] += 1;
}
//else create a new item in the cookie
else {
$cart[$product['id']] = [];
$cart[$product['id']]['quantity'] = 1;
}
//now $cart[$product['id']]['m'] always exists, so you can update m
$cart[$product['id']]['m'] = empty($_POST['m']) ? 1 : $_POST['m'];
答案 1 :(得分:0)
这是我尝试的但我似乎用我的代码重复自己。
if(isset($_COOKIE['cart'][$product['id']])){
$cart[$product['id']]['m'] = empty($_POST['m']) ? 1 : $_POST['m'];
if(!empty($cart[$product['id']]['quantity'])){
$cart[$product['id']]['quantity'] += 1;
} else {
$cart[$product['id']]['quantity'] = 1;
}
} else {
$cart[$product['id']] = [];
$cart[$product['id']]['m'] = empty($_POST['m']) ? 1 : $_POST['m'];
$cart[$product['id']]['quantity'] = 1;
}