当前位置: 首页 > 知识库问答 >
问题:

更新购物车数量(部分有效)

张心水
2023-03-14

我有一个购物车,目前允许我添加产品,删除产品,并与一个产品在车上,我可以改变其数量。

然而,如果我在购物车中有两个产品,我试图改变第一个项目的数量,网站就会崩溃。它不会用新的数量重新加载页面,它只是超时,你不能再点击网站上的任何其他链接。

显示数量的代码为:

<form action="cart.php" method="post">
        <input name="quantity" type="text" value="' . $each_item['quantity'] . '" size="1" maxlength="2" />
        <input name="adjustBtn' . $pid . '" type="submit" value="Update" />
        <input name="item_to_adjust" type="hidden" value="' . $pid . '" />
</form>

处理这个问题的代码如下:

if (isset($_POST['item_to_adjust']) && $_POST['item_to_adjust'] != "") {
    // execute some code
    $item_to_adjust = $_POST['item_to_adjust'];
    $quantity = $_POST['quantity'];
    $quantity = preg_replace('#[^0-9]#i', '', $quantity); // filter everything but numbers
    if ($quantity >= 100) { $quantity = 99; }
    if ($quantity < 1) { $quantity = 1; }
    if ($quantity == "") { $quantity = 1; }
    $i = 0;
    foreach ($_SESSION["cart"] as $each_item) { 
              $i++;
              while (list($key, $value) = each($each_item)) {
                  if ($key == "item_id" && $value == $item_to_adjust) {
                      // That item is in cart already so let's adjust its quantity using array_splice()
                      array_splice($_SESSION["cart"], $i-1, 1, array(array("item_id" => $item_to_adjust, "quantity" => $quantity)));
                  } // close if condition
              } // close while loop
    } // close foreach loop
}
?>

我在这里查看了答案,但没有找到解决方案。有人能帮我吗?我会尽力提供可能需要帮助的任何其他信息。

我只是想澄清一下,在我尝试更改不是我添加的最后一个项目的数量之前,购物车工作得很好。因此,如果我的购物车中有3件物品,我无法更改物品1或2的数量,但我可以更改物品3

提前谢谢

共有1个答案

欧阳正卿
2023-03-14

解决方案是使用购物车数组的副本进行编辑。

编辑当前正在迭代的数组可能会导致意外行为。

 类似资料:
  • 我正在跟随Laravel的购物车教程,但即使我已经将他的代码复制到了点子上,它也不像教程中那样工作。每次你点击一个产品时,购物车的数量应该会增加,但事实并非如此。 我正在学习Max Schwarzmueller的“Laravel购物车”教程,您可以在youtube上找到:https://www.youtube.com/watch?v=56TizEw2LgI 我是php、laravel和sessio

  • 对于标准的opencart行为,在cart中添加产品后,用户需要手动点击update按钮进行数量更新。有关示例,请参阅http://demo.opencart.com/。但是,我想更改为当我改变数量时,推车信息可以立即刷新。我尝试过以下代码,但它不起作用: 对于Catalog/View/Theme/Default/Template/Checkout/cart.tpl,我已更新: button ty

  • 我正在用PHP编写一个自定义购物车,我将产品信息添加到购物车会话中,如下所示: 我的挑战是:如果产品已经存在于$\u SESSION['cart]数组中,我想更新产品的价格和数量($qty),而不是添加它。像这样的

  • 我有一个Android购物应用程序,可以根据库存中产品的可用性来购买产品。最后,我需要扣除购物车上的产品数量,并更新数据库中该商品的数量。问题是,它当前更新了购物车中最后一件商品的数量的数据库值。如何让它更新购物车中商品数量的所有数据库值?。请有人帮帮我。Bellow是执行此操作的类的代码。

  • 在WooCommerce中,我希望有一个复选框,当按下时,它会将一个产品添加到我的购物车中,并且该产品的价格是购物车总价格的3%。 基于“在Woocommerce结帐页面中将产品添加到购物车的复选框字段”回答线程,并进行了一些编辑以满足我的需要,以下是我的代码: 它添加产品精细,一切都好。然而,当我设定价格时,它没有更新。 好的,这是未选中的复选框。 这是选中后的复选框。如您所见,项目的值为46.

  • 我正在做一个拉拉维尔购物网站项目,我对购物车中的产品数量有问题。我对拉雷维尔比较陌生,所以事情对我来说变得更复杂。。。问题是我不能真正有效地循环(并寻找)simular产品。 但是当我按下“添加到购物车”按钮时,这个功能会运行: 产品是对象,我不确定如何循环查找产品的id以匹配数组-产品id。我尝试json_decode()看看这是否会使其成为一个数组,但我在这里可能是错误的,因为当我返回值时,它