值我有一個簡單的購物車的項目我的工作,在那裏我拉出來的信息我的數據庫中刪除購物車中的單個項目。此購物車的一個組件是刪除單個項目的能力。它的大部分工作。我無法弄清楚的是這個關於索引的bug。這是我的代碼。之後我會解釋這個問題。
$cartoutput = "";
$cartTotal="";
if(!isset($_SESSION["cart_array"]) || count($_SESSION["cart_array"]) < 1){
$cartoutput = "<div align='center'><font style='font-weight: bold; font-size: 20pt;'>Your order is currently empty.</font></div>";
}else{
$i=1;
foreach ($_SESSION["cart_array"] as $each_item) {
$item_id = $each_item['item_id'];
$result = mysqli_query($con,"SELECT * FROM menuitem WHERE id='$item_id' LIMIT 1");
if (!$result) {
printf("Error: %s\n", mysqli_error($con));// Displays the error that mysql will generate if syntax is not correct.
exit();
}
//echo mysqli_num_rows($result);
while ($row = mysqli_fetch_array($result)) {
$id = $row['id'];
$product_name = $row["name"];
$price = $row["price"];
$description = $row['description'];
}
$cartoutput .= " <tr><td width='20%'> Order Item $i </td>
<td width='40%'> " . $product_name . "</td>
<td width='20%'> $" . $price . ".00</td>";
$cartoutput .=" <td width='20%'><form action='cart.php' method='post'>
<input name='deleteBtn" . $item_id . "'type='submit' value='Remove This Item' />
<input name='index_to_remove' type='hidden' value='" . $i . "' />
</form></td></tr>";
$i++;
}
}
關注的領域是$ cartoutput,我使用表單來刪除一個項目。我使用的值是$i
,它的大部分工作。這是處理該表格的代碼:
if (isset($_POST['index_to_remove']) && $_POST['index_to_remove'] != "") {
// Access the array and run code to remove that array index
$key_to_remove = $_POST['index_to_remove'];
if (count($_SESSION["cart_array"]) <= 1) {
unset($_SESSION["cart_array"]);
header("location: cart.php");
} else {
unset($_SESSION["cart_array"]["$key_to_remove"]);
//sort($_SESSION["cart_array"]);
}
}
我遇到的問題是當我有3個或更多項目時。如果我的購物車中有$i=3
,並且用戶刪除了第二項($i=2
),那麼它將被刪除。然後$i=3
變得$i=2
,如果你嘗試刪除$ I = 2再次(或第二項再次)我的代碼不能正常工作,因爲它不會刪除替換被刪除的項新指標。
我嘗試過幾乎一切。我改變了表單,嘗試設置不同的參數。沒有任何工作。有沒有人有任何想法如何解決這個錯誤?我會選擇正確的答案。謝謝!
檢查我的答案更新下面 –