我基本上有一个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>
<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
}
在将用户数据输入数据库之前,还应该对其进行检查/清理。