无法将相同的产品添加到购物车

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法将相同的产品添加到购物车相关的知识,希望对你有一定的参考价值。

我使用session和jquery创建了一个添加到购物车的代码。它差不多完成但是我遇到了两个问题。

1)当我刷新页面时,我收到错误

Notice: Undefined index: quantity in C:xampphtdocsadd-to-cartajax_cart.php on line 5

2)我可以将产品添加到购物车但如果我添加相同的产品两次,那么我收到错误。

 Notice: Undefined index: 250.00 in C:xampphtdocsadd-to-cartajax_cart.php on line 30
 Notice: Undefined offset: 1 in C:xampphtdocsadd-to-cartajax_cart.php on line 31

其他部分存在一些问题(可能是价格)。

else{
    $_SESSION['product_cart'][$product_id][$product_price] = $_SESSION['product_cart'][$product_id][$product_price] + ($product_price*$quantity);
    $_SESSION['product_cart'][$product_id][$quantity] = $_SESSION['product_cart'][$product_id][$quantity]+$quantity;
    }

AJAX函数调用ajax_cart.php

function add_cart(p_id=""){
    var quantity = $(".quantity"+p_id).val();
    $.ajax({
        type:"post",
        url:"ajax_cart.php",
        data:{action:'add',p_id:p_id,quantity:quantity},
        success:function(result){
            $('.cart_data').html(result);
        }
    });
}

添加到购物车

$action = $_POST['action'];
 $p_id   = trim($_POST['p_id']);
 $quantity = $_POST['quantity'];
if($action == 'add'){
     if(!empty($p_id)){
           $query = "SELECT product_id,product_title,product_price,product_image FROM product WHERE product_id=?";
            if ($stmt = $conn->prepare($query)) {
                $stmt->bind_param("i", $p_id);
                $stmt->execute();
                $stmt->bind_result($product_id, $product_title,$product_price, $product_image);
                $stmt->fetch();
              }

             $product = array(
                "p_id"=>$product_id,
                "title"=>$product_title,
                "price"=>$product_price*$quantity,
                "image"=>$product_image,
                "quantity"=>$quantity
             );
        if(isset($_SESSION['product_cart']) && !empty($_SESSION['product_cart']))
        {
            if(!array_key_exists($product_id,$_SESSION['product_cart']))
            {
                $_SESSION['product_cart'][$product_id] = $product;
            }
            else{
                $_SESSION['product_cart'][$product_id][$product_price] = $_SESSION['product_cart'][$product_id][$product_price] + ($product_price*$quantity);
                $_SESSION['product_cart'][$product_id][$quantity] = $_SESSION['product_cart'][$product_id][$quantity]+$quantity;
            }       
        }
        else{
          $_SESSION['product_cart'][$product_id] = $product;
        }
    }   
}
答案

使用else部分如下

else{
            $_SESSION['product_cart'][$product_id]['price'] += ($product_price*$quantity);
            $_SESSION['product_cart'][$product_id]['quantity'] += $quantity;
        }   

并添加以下代码

if(!isset($_POST['action']) || !isset($_POST['quantity'])) return;

在线以上

$action = $_POST['action'];

另一答案

试试这个

if(!array_key_exists($product_id,$_SESSION['product_cart']))
{
    $_SESSION['product_cart'][$product_id] = $product;
}
else{
    $_SESSION['product_cart'][$product_id]['price'] += ($product_price*$quantity);
    $_SESSION['product_cart'][$product_id]['quantity'] += $quantity;
}

以上是关于无法将相同的产品添加到购物车的主要内容,如果未能解决你的问题,请参考以下文章

检查所选产品和添加到购物车的产品是不是相同

如何使用户无法从不同商店将产品添加到购物车会话?

使用复选框将数量添加到购物车

如何检测数组中的相同元素并总结数量?

通过 api 调用将产品添加到购物车

除某些 WooCommerce 产品类别外,自动将产品添加到购物车