如何检查提交按钮是否已经在PHP中被点击


How to check if a submit button has already been clicked in PHP

我基本上有一个updatecart.php脚本,它将数据插入到数据库表中,一旦HTML页面的提交按钮被单击,它就会转到显示更新内容的display.php。我的问题是,我有一个数量字段在我显示的数据,如果用户点击提交按钮(添加东西到购物车),那么我希望数量增加多少数量的用户已经选择在HTML页面的下拉菜单中。现在,如果用户再次单击提交按钮,什么也不会发生,因为它是相同的数据被添加到数据库表。

代码:

HTML:

<form name = "AddToCart" action ="../updatecart.php" method='post'>
  Quantity:
  <select name="Quantity">
  <option value="1">1</option>
  <option value="2">2</option>
  <option value="3">3</option>
  <option value="4">4</option>
  </select> &nbsp;&nbsp;&nbsp;
  <input type ="submit" name ="Add" value="Add To Cart"/>
  </form>

updatecart.php:

<?php
// Connection to database omitted 
$Quantity = $_POST['Quantity'];
$query = "INSERT INTO Cart VALUES
('1', 'The Fiqh of Dawah', '18.00', 'Books', '$Quantity')";
mysql_query($query);
header("location:displaycart.php");
?>

display.php:

//Not necessary to show this as it simply uses `echo` to create a table and display the whole table data with `SELECT * FROM Cart`

您需要先通过执行SELECT来检查商品是否已经存在于购物车中,然后在INSERT(如果购物车中没有此商品的行)或UPDATE(如果该商品已经在购物车中)之间进行选择。

在MySql中,你也可以使用INSERT ... ON DUPLICATE KEY UPDATE语法来做。但是你需要一个主键来完成这个操作

您可以使用isset($_POST['Add'])检查提交按钮是否已提交

if(isset($_POST['Add']))
{
$Quantity = $_POST['Quantity'];
$query = "INSERT INTO Cart VALUES
('1', 'The Fiqh of Dawah', '18.00', 'Books', '$Quantity')";
mysql_query($query);
header("location:displaycart.php");
}

你可以在你的updatecart.php的顶部检查一下提交是否被点击了

比如

isset($_POST['Add']) {
// insert data into DB
}
else {
// redirect somewhere as they havent clicked Submit button
}

在将用户数据输入数据库之前,还应该对其进行检查/清理。