[英]Remove array of items from session shopping cart
我在會話購物車中保存了一系列項目。 它被填充到一個表中。 每行都有一個索引和一個按鈕,用於從 $_SESSION['cart'].. 中刪除此特定項目(項目數組)。
這是我目前的代碼:
$i = 0;
foreach($_SESSION['cart'] as $item)
{
//Populate items in a table ?>
<tr>
<td><center><?php echo $i; ?></center></td>
<td><center><?php echo $item['item'];?></center></td>
<td><center><?php echo '£'. $item['unitprice'];?></center></td>
<td><center><?php echo $item['quantity'];?></center></td>
<td><center><?php echo '£'.($item['unitprice'] * $item['quantity']) ?></center></td>
<td><input type="submit" value="Remove" Onclick = unset($_SESSION['cart'][$i]); ></td>
</tr>
<?php
$total += ($item['unitprice'] * $item['quantity']);
$i++;
}
我想要做的就是從會話購物車中刪除一行數據(每行包含索引、項目、項目價格、總計(如果有多個項目)和刪除按鈕)。 提前致謝..
unset 是正確的,但是 PHP 是在服務器端執行的。 因此,因為這是一個客戶端操作,所以您需要使用 JavaScript 來選擇該操作。 (您也可以使用舊的 fasion 形式)。 我更喜歡使用 jQuery,因為它已經內置了 ajax 支持並且很容易使用。 基本上,只需從傳遞要刪除的元素的“ID”的 onClick 調用一個函數。 然后該函數將對另一個腳本進行 AJAX 調用,該腳本將獲取該 ID 並刪除該元素。 當該腳本返回成功時,讓 JavaScript 刪除(或隱藏)該元素。 這樣用戶永遠不會離開或刷新頁面,腳本可以做一些額外的清理(如數據庫更新、會話更新、驗證請求等)
i = 0;
foreach($_SESSION['cart'] as $item)
{
//Populate items in a table ?>
<tr>
<td><center><?php echo $i; ?></center></td>
<td><center><?php echo $item['item'];?></center></td>
<td><center><?php echo '£'. $item['unitprice'];?></center></td>
<td><center><?php echo $item['quantity'];?></center></td>
<td><center><?php echo '£'.($item['unitprice'] * $item['quantity']) ?></center></td>
<td><input type="submit" value="Remove" onClick="RemoveItem(<?= $i ?>)" ></td>
</tr>
<?php
$total += ($item['unitprice'] * $item['quantity']);
$i++;
}
在這里,我已將 onClick 部分更改為使用 javascript 調用。 您會注意到我使用了<?= tag
而不是完整的<?php echo
。 這是因為從 php5 開始,您可以使用簡寫<?=
來回顯表達式。
在你的腳本部分,你可以做這樣的事情。 我使用 POST 因為它更安全。
function RemoveItem(id) {
$.post('script-to-remove.php',
{ ItemID: id },
function(data) {
if(data==='success') {
//Remove item from DOM
} else alert("There was an error!"); //If you want error handling
}
);
}
為了從 dom 中刪除項目,它對表格有點棘手,因為沒有一個很酷的效果真的有效,例如淡出、滑動、動畫等。我會考慮用 div 重新格式化它。
至於它調用的php腳本,就跟調用unset一樣簡單。 您可以進一步開發它,以便可能檢查請求的有效性,但現在,我只是要取消設置。
<?php
$ItemID = isset($_POST['ItemID'])?intval($_POST['ItemID']):-1;
if($ItemID<0) die("Invalid ID"); //Change this if you want
if(isset($_SESSION['cart'][$ItemID])) unset($_SESSION['cart'][$ItemID]);
echo 'success';
?>
基本上在這里,我首先檢查輸入的參數是否正確,確保它是一個整數並保存它,否則我默認它為-1。 然后,如果項目 ID 低於 0(所以肯定是錯誤的),我會告訴腳本輸出消息並退出。 最后,我檢查該 ID 或索引是否有實際值,然后取消設置。 如果成功,則輸出成功。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.