我正在尝试从某种购物车中删除某件商品。这些项目在“保存到购物车”时会保存到会话中。
但现在我希望能够从这个“购物车”中删除某些商品。因为我从这里得到了脚本(stackoverflow),我对代码并不熟悉。我在google上看到了一些答案,这里描述了使用unset
删除会话中的条目。但我不知道从哪里开始。如果需要其他信息,请告诉我。谢谢你看看我的问题...
这是HTML(没什么特别的):
<div class="txtHint"></div>
这是我的剧本:
$('.add-product').click(function() {
var productName = $(this).data('product');
$.post('example.com/reload.php', {productName: productName}, function(data) {
$('.txtHint').html(data);
})
});
这是我的reload.php文件:
<?php
session_start();
if (!array_key_exists('products', $_SESSION) || !is_array($_SESSION['products'])) {
$_SESSION['products'] = [];
}
$productName = array_key_exists('productName', $_POST) ? (string) $_POST['productName'] : '';
if ($productName) {
$_SESSION['products'][] = $productName;
}
?>
<h4>Saved Items</h4>
<?php foreach ($_SESSION['products'] as $product): ?>
<div class="echo-product"><i style="color:#F60;padding-right:20px;" class="fa fa-anchor" aria-hidden="true"></i><?php echo htmlspecialchars($product); ?></div>
<?php endforeach;?>
更新代码:正如Bert Maurau(我希望)所建议的那样。
<?php
session_start();
if (!array_key_exists('products', $_SESSION) || !is_array($_SESSION['products'])) {
$_SESSION['products'] = [];
}
$productName = array_key_exists('productName', $_POST) ? (string) $_POST['productName'] : '';
if(isset($_GET['delparam'])){
unset($_SESSION['products'][$productName]);
}
if(isset($_GET['addparam'])){
$_SESSION['products'][] = $productName;
}
?>
如果我使用它,它不会添加任何新项......
答案 0 :(得分:4)
你应该可以这样做:
unset($_SESSION['products'][$productName]);
这将取消设置与您的productName匹配的array_key及其值。
编辑:使用未设置的代码
HTML:
$('.delete-product').click(function() {
var productName = $(this).data('product');
$.post('example.com/reload.php?delparam', {productName: productName}, function(data) {
})
});
Reload.php(在$ productName之后)
if(isset($_GET['delparam'])){
unset($_SESSION['products'][$productName]);
}
if(isset($_GET['addparam'])){
//code for adding product
}