我只是想从会话中删除单个项目[cart_item]

时间:2015-12-30 07:30:17

标签: php

我使用会话在我的页面中添加没有数据库的项目。在这里我尝试在我的页面中删除此文件时遇到一个问题。这是我删除链接的代码。我以前用标题变量选择数据。

<a href="step3.php?action=remove&title=<?php echo $item["title"]; ?>" class="product-title">
    <span class="label label-warning pull-right">Remove</span>
</a>

我使用switch case来选择删除操作。

case "remove":
    if(!empty($_SESSION["cart_item"])) {
        foreach($_SESSION["cart_item"] as $k => $v) {
            if($_GET["title"] == $k)
                unset($_SESSION["cart_item"][$k]);              
            if(empty($_SESSION["cart_item"]))
                unset($_SESSION["cart_item"]);
        }
    }
break;

它完美地选择了标题变量。但删除操作不执行。

这里我也没有从会话中选择单个数据的任何独特价值......也提供一些解决方案..

4 个答案:

答案 0 :(得分:1)

你必须传递参数&#34;代码&#34;或者&#34; cart_item&#34;如果条件 if(!empty($ _ SESSION [&#34; cart_item&#34;]),则应该为空但是您的验证不应该是空的  验证你的状况:

case "remove":
    if(!empty($_SESSION["cart_item"])) { //condition 1
        foreach($_SESSION["cart_item"] as $k => $v) {
                if($_GET["code"] == $k)
                    unset($_SESSION["cart_item"][$k]);              
                if(empty($_SESSION["cart_item"]))// condition 2 wont work 
                    unset($_SESSION["cart_item"]);
        }
    }
break;

答案 1 :(得分:0)

if($_GET["code"] == $k) 应该 if($_GET["title"] == $k)

答案 2 :(得分:0)

您尚未通过$_GET["code"]通过该链接。 不应该是$_GET["title"] == $k吗?

答案 3 :(得分:0)

在您的网址中,您传递了actiontitle没有code

所以它应该是

case "remove":
    if(!empty($_SESSION["cart_item"])) {
        foreach($_SESSION["cart_item"] as $k => $v) {
            if($_GET["title"] == $k)
                unset($_SESSION["cart_item"][$k]);              
            if(empty($_SESSION["cart_item"]))
                unset($_SESSION["cart_item"]);
        }
    }
break;