您好我正在做一个项目来建立一个销售游戏的网站,但我现在的一个问题是用一个按钮更新数量。我已经让它使用了我想要更新的项目旁边的多个更新按钮,但为了使它更加真实,我想只有一个按钮,它将更新我数据库中的篮子表中的所有项目数量。< / p>
这是我的购物车档案,我已经注释了多个更新按钮的工作位置。
<?php
$count = 0;
while ($count < $numrow)
{
$row = $results -> fetch_assoc();
extract($row);
echo"<div>";
echo"<div class='recommended_games'>";
echo "<img src='images/".$gameIMG."' />";
echo "</div>";
echo '<div class="price_tag">';
echo '<div class="price_tag">£'.$gamePrice. '</div>';
echo'</div>';
echo '<div id="update_form"><form action="updatebasket.php" method="POST" name="updateform" id="update_all">';
echo '<select name="quantity" id="quantity" />';
echo '<option value="1">1</option>';
echo '<option value="2">2</option>';
echo '<option value="3">3</option>';
echo '<option value="4">4</option>';
echo '<option value="5">5</option>';
echo '</select>';
//echo '<input type="hidden" value="'.$gameID.'" name="gameid" id="gameid" />';
//echo '<input type="submit" value="update" />';
echo '</form>';
echo '</div>';
echo '</form>';
echo"<img class='box1' src='Images/Grey-Banners.png' />";
echo"</div>";
$count = $count + 1;
}
echo '<input type="hidden" value="'.$gameID.'" name="gameid" id="gameid" form="update_all"/>';
echo '<input type="submit" value="update" form="update_all"/>';
?>
这是我的updatebasket文件,用于更新数据库中的数量
<?php
session_start();
require "dbconnect.php";
$memberID = $_SESSION['id'];
$quantity = $_POST['quantity'];
$gameID = $_POST['gameid'];
$connect->query($query);
$query = "UPDATE basket SET quantity = ".$quantity." WHERE gameid = ".$gameID." AND id = ".$memberID."";
$results = $connect->query($query);
mysqli_commit($con);
header('Location: cart.php');
?>
答案 0 :(得分:0)
如果我理解正确,您需要使用数组来实现此目的,通过更改表单,您可以使用foreach来组合查询以更新购物车中的每个条目。因此,一个按钮将使用相应的数量更新购物车中的每个项目。我没有测试这段代码,这就是我接近它的方式。
HTML表单更改的示例:
echo '<div id="update_form"><form action="updatebasket.php" method="POST" name="updateform" id="update_all">';
echo '<select name="quantity[]" id="quantity" />';
echo '<option value="1">1</option>';
echo '<option value="2">2</option>';
echo '<option value="3">3</option>';
echo '<option value="4">4</option>';
echo '<option value="5">5</option>';
echo '</select>';
//echo '<input type="hidden" value="'.$gameID.'" name="gameid[]" id="gameid" />';
//echo '<input type="submit" value="update" />';
echo '</form>';
echo '</div>';
echo '</form>';
echo"<img class='box1' src='Images/Grey-Banners.png' />";
echo"</div>";
$count = $count + 1;
}
echo '<input type="hidden" value="'.$gameID.'" name="gameid[]" id="gameid" form="update_all"/>';
echo '<input type="submit" value="update" form="update_all"/>';
?>
查询示例:
foreach ($_POST['gameid'] as $row=>$id) {
$gameid = $id;
$newquantity = ($_POST['quantity'][$row]);
$query = "UPDATE basket SET quantity = ".$newquantity." WHERE gameid = ".$gameID." AND id = ".$memberID."";
$connect->query($query);
}
答案 1 :(得分:0)
一种解决方案是为您的数量<select>
输入唯一名称,并将游戏ID附加到末尾(例如“quantity_32”)。这样可以很容易地知道购物车中每个游戏的数量。
// POST Example
$_POST['quantity_32'] = 1;
$_POST['quantity_31'] = 3;
$_POST['quantity_37'] = 2;
前端表单更改
echo '<select name="quantity_<?=$gameID?>" id="quantity" />';
后端处理
然后在处理页面循环遍历$ _POST变量并找到数量字段并获取他们的游戏ID。
foreach ($_POST as $key => $quantity) {
// Ignore non-quantity fields
if (preg_match('/quantity_([0-9]+)/i', $key, $result) !== 1) continue;
$quantity = (int)$quantity;
$game_id = (int)$result[1];
// Update Cart Quantity in DB
// ...
}
重要!
请确保您SQL-Escape保存到数据库中的所有值。如果你不这样做,黑客可以做一些讨厌的事情。
此示例显示了如何使用MySQLi Prepared Statements保持安全。 http://mattbango.com/notebook/code/prepared-statements-in-php-and-mysqli/