从会话中移除项目on

时间:2016-07-25 12:30:31

标签: javascript php jquery html

我正在尝试从某种购物车中删除某件商品。这些项目在“保存到购物车”时会保存到会话中。

但现在我希望能够从这个“购物车”中删除某些商品。因为我从这里得到了脚本(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;
}
?>

如果我使用它,它不会添加任何新项......

1 个答案:

答案 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
}