php - 每次在php中单击按钮时如何增加变量中的数字
问题描述
我正在创建一个使用 php 创建的购物车。我有两个按钮,单击时允许用户增加或减少项目的数量。
当用户单击加号按钮时,数量会增加一,但是如果他们再次单击它,则不会发生任何事情。有没有一种方法可以让用户说单击按钮直到数量达到 20?
这是我的代码:
我的代码的第一部分检查是否已单击项目上的原始添加到购物车按钮。如果是,则获取项目的 ID。恢复项目 ID 后,它们会检查是否已创建购物车会话。如果没有找到购物车会话,那么它将创建一个。创建会话后,它将检查已添加到表单的数量。接下来,它会创建一个数组调用项,其中将保存该项的 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
];
}
接下来在购物车文件中,代码检查是否有购物车会话以及是否至少有一件商品。如果购物车中至少有一件商品,那么代码将为每个循环一个 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 开始。
推荐阅读
- scala - scala spark NoClassDefFoundError - InitialPositionInStream
- amazon-web-services - 如何为动态日志文件名配置 aws cloudwatch 日志配置
- javascript - MS 团队机器人 JS - 创建对话
- python-3.x - How to "undo" `bytes()` encoding for a string?
- c++ - googletest:测试太大的数据结构
- python - TypeError: unhashable type: 'list' 在 Pandas 系列上使用 nltk.FreqDist 时
- javascript - retrieving images from data return in vuejs
- scala - 通过 Akka HTTP / Akka Streams 转发(下载/上传)大文件
- java - 无法弄清楚在 Eclipse 中导入 jme3 的错误
- javascript - Docker-compose build 给出错误 ADD failed: no such file or directory