繁体   English   中英

每次在 php 中单击按钮时如何增加变量中的数字

[英]How to increase number in variable each time a button is clicked in php

我正在创建一个使用 php 创建的购物车。 我有两个按钮,单击时允许用户增加或减少项目的数量。

当用户单击加号按钮时,数量会增加一,但是如果他们再次单击它,则不会发生任何事情。 有没有一种方法可以让用户说单击按钮直到数量达到 20?

这是我的代码:

我的代码的第一部分检查是否已单击项目上的原始添加到购物车按钮。 如果是,则获取项目的 ID。 恢复项目 ID 后,他们会检查是否已创建购物车 session。 如果没有找到购物车 session,那么它将创建一个。 创建 session 后,它将检查已添加到表单中的数量。 接下来,它会创建一个数组调用项,其中将保存该项的 ID 和数量。

if(isset($_POST['add_to_cart']) && isset($_GET['id'])) {
    $id = $_GET['id'];

    // Check if there is a session for the cart set already, if not then set one.
    if(!isset($_SESSION['shoppingcart'])) {
        $_SESSION['shoppingcart'] = [];
    }

    $quantity = $_POST["amount"];

    $item = [
        "id"        => $id,
        "quantity"  => $quantity
    ];
    }

接下来在购物车文件中,代码检查是否有购物车 session 并且至少有一件商品。 如果购物车中至少有一件商品,那么代码将为每个循环一个 a 以从数据库中获取每件商品。

if(isset($_SESSION['shoppingcart']) && count($_SESSION['shoppingcart']) != 0) {
    $list = $_SESSION['shoppingcart'];
$total = 0;
    foreach($list as $item) {
        $id = $item['id'];

        $query = "SELECT * FROM item WHERE ItemID = '$id'";

        $result = mysqli_query($mysqli, $query);
        
    $row = $query_result->fetch_assoc();

        if (mysqli_num_rows($result) == 1){
            $row = mysqli_fetch_array($result);

            $id = $row['ItemID'];
            $name = $row['ItemName'];
            $image = $row['ItemImage'];
            $price = $row['Price'];
            $size = $row['Size'];
            $quantity = $item['quantity'];

            
        $subtotal = $price*$quantity;
        $total += $subtotal;
            
            ?>

HTML:

<form action="#" method="post">
  <h4>Quantity:  </h4>
  <input type="submit" value="+" name="plus" id="plus" /> 
  <input type="text" class="form-control" id="quanitiy" name="quantity" value= <?php echo "$quantity"; ?>>
  <button type="submit" name="minus"><i class="bi bi-dash"></i></button>
</form>

PHP:

 <?php if(isset($_POST['plus']) && ($quantity < 20)){ $_SESSION['quantity'] = $quantity++; }?>

我知道这段代码是 sql 注入的受害者,一旦我让这部分工作,我将修复它。

$quantity似乎实际上并没有在您的代码中的任何地方定义。 根据您所展示的内容,甚至第一个增量如何工作也有点不清楚。 也许您从问题中省略了一些细节?

但是,根据可用的信息,这似乎更合乎逻辑:

<?php
session_start();

if(isset($_POST['plus'])) {
   $quantity = (isset($_SESSION['quantity']) ? $_SESSION['quantity'] : 0);

   if ($quantity < 20) {
     $quantity++; 
     $_SESSION['quantity'] = $quantity; 
   }
}

这将检查现有值,并将其用作增量的起点。 如果没有现有值,它将从 0 开始。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM