我創建了一個表單,每次它都會在 foreach 回圈期間存盤不同的 id
<?php
foreach ($res as $r) {
?>
<form id="clearitem" action="clearitem.php" method="POST" enctype="multipart/form-data">
<input type="text" name="clearitem" value="<?php echo $r['cart_id'];?>">
<button type="Submit">×</button>
</form>
<?php
}
?>
并且資料的檢索作業完美,它一個接一個地向我顯示每個ID,但是當我單擊按鈕(在本例中為清除專案)時,它僅適用于第一個值,即如果我單擊按鈕第二個或第三個值,它只洗掉第一個,而不是與按鈕對應的那個。
如果有人可以提供,請幫忙,為什么會發生這種情況以及適當的解決方案!
clearitem.php
if(isset($_POST['clearitem'])){
$clear=$_POST['clearitem'];
$sql = "DELETE FROM cart WHERE id=".$clear;
if ($conn->query($sql) === TRUE) {
echo "Record deleted successfully of id".$clear;
} else {
echo "Error deleting record: " . $conn->error;
}
}
uj5u.com熱心網友回復:
in each form在這樣的“多表單”環境下,系統應該能夠根據資料值正確處理提交的資料。
因此,下面的代碼應該可以作業(經過測驗):
<?php
$conn = new mysqli("localhost","dbuser","dbpassword","dbname");
$sql = "SELECT * FROM cart";
$stmt = $conn->prepare($sql);
$stmt->execute();
$res = $stmt->get_result();
foreach ($res as $r) {
?>
<form id="clearitem" action="clearitem.php" method="POST" enctype="multipart/form-data">
<input type="text" name="clearitem" value="<?php echo $r['cart_id'];?>">
<button type="Submit">×</button>
</form>
<?php } ?>
以下是clearitem.php代碼
<?php
if (isset($_POST["clearitem"])) {
$conn = new mysqli("localhost","dbuser","dbpassword","dbname");
$sql = "delete FROM cart where cart_id=?" ;
$stmt = $conn->prepare($sql);
$id=$_POST["clearitem"];
$stmt->bind_param("i", $id);
$stmt->execute();
}
?>
<script>
alert("Done !");
if ('referrer' in document) {
window.location = document.referrer;
/* OR */
//location.replace(document.referrer);
} else {
window.history.back();
}
</script>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/480949.html
