更新cookie值

时间:2018-02-22 14:08:11

标签: php arrays cookies

我有一个使用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');

2 个答案:

答案 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;
            }