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

将会话[购物车]数量减至库存数量(以db为单位)

寿元白
2023-03-14

我有一个表格显示($_session['购物车'],里面有一个表单,我可以在里面手工输入我想要的数量到我的($_session['购物车']产品中。

    <form name="formulario2" method="POST" target="oculto"><input type="hidden" name="action" value="update">
    foreach($_SESSION['cart'] as $product_id => $quantity) { 
    echo "<td align=\"center\"><input type = \"text\" size=\"1\" name=\"qty[$product_id]\" value =\"{$_SESSION['cart'][$product_id]}\"></td>";
}
</form>

然后,我使用以下内容更新($_session['cart'])数量

    <?php
    if(isset($_POST['action']) && ($_POST['action'] =='update')){
    //
    foreach ($_POST['qty'] as $product_id=> $quantity){
    $qty = (int)$quantity;
    if ($qty > 0){
    $_SESSION['cart'][$product_id] = $qty;
    }
    }
    }
    ?>

现在我想把我更新到($_session['cart'])的那些数量减去我的数据库中的库存数量。

我想在最后一个“foreach($_post['qty']”中,我还应该说减去更新到数据库数量的数量,但是我不知道怎么做。有什么帮助吗?

共有1个答案

羊禄
2023-03-14

1)将value=“{$_session['cart'][$PRODUCT_ID]}”替换为value=“{$Quantity}”。您已经在foreach语句中检索到了它。2)对于数据库,如果您使用mysql,我将重新推荐使用PDO访问数据库(由于第二段代码缺少缩进且括号不匹配,我已经重写了它):

<?php
  if ((isset($_POST['action']) && ($_POST['action'] == 'update'))
  {
    foreach ($_POST['qty'] as $product_id => $quantity)
    {
      $qty = intval($quantity);
      $pid = intval($product_id); // ALSO use the intval of the $product_id,
                                  // since it was in a form and it can be hacked
      $_SESSION['cart'][$pid] = $qty; // NOTE: you need to also update the
                                      // session`s cart with 0 values, or
                                      // at least to unset the respective
                                      // product:
                                      // unset($_SESSION['cart'][$pid])
      if ($qty > 0)
      {
        // now update the DB:
        $mysql_host = "127.0.0.1";
        $mysql_user = "root";
        $mysql_password = "";
        $mysql_database = "myShop";
        $dbLink = new PDO("mysql:host=$mysql_host;dbname=$mysql_database;charset=utf8", $mysql_user, $mysql_password, array(PDO::ATTR_PERSISTENT => true));
        $dbLink->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);
        $query = $dbLink->prepare("update `products` set `stock` = `stock` - ? WHERE `productId` = ? limit 1");
        $query->execute(array($qty, $pid));
      }
   }
}
?>

希望它对你有用!

问候!

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

  • 本文向大家介绍jQuery实现购物车多物品数量的加减+总价计算,包括了jQuery实现购物车多物品数量的加减+总价计算的使用技巧和注意事项,需要的朋友参考一下

  • 我对Java的概念很陌生。我使用核心java设计了一个购物车应用程序。但我无法获得所需的输出。这是我的pojo课程项目。Java语言 主要课程是ShopCartTest。Java语言 有4个pojo的购物车,库存,项目,用户。用户必须能够选择多个数量的多个项目。(对于项目,将创建一个列表,对于数量:映射。其中项目对象是键,数量是值)。用户选择类别、项目,然后选择数量。然后他可以继续结帐。所以当他决

  • 我有一个购物车,目前允许我添加产品,删除产品,并与一个产品在车上,我可以改变其数量。 然而,如果我在购物车中有两个产品,我试图改变第一个项目的数量,网站就会崩溃。它不会用新的数量重新加载页面,它只是超时,你不能再点击网站上的任何其他链接。 显示数量的代码为: 处理这个问题的代码如下: 我在这里查看了答案,但没有找到解决方案。有人能帮我吗?我会尽力提供可能需要帮助的任何其他信息。 我只是想澄清一下,

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

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

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

  • 问题内容: 是否可以在PHP中使数组成为会话变量? 情况是,我有一个表(第1页),其中有些单元格具有指向特定页面的链接。下一页将列出名称(第2页,我想保留在会话数组中)及其相应的复选框。提交此表单后,它将进入一个交易页面(第3页,其中已发布复选框的值保存在数据库中以用于对应名称)。现在,如果我返回首页并单击另一个单元格,则会话数组将包含新名称列表还是旧名称列表? 问题答案: 是的,PHP支持将数组