Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP从购物车中删除项目_Php_Session_Multidimensional Array - Fatal编程技术网

PHP从购物车中删除项目

PHP从购物车中删除项目,php,session,multidimensional-array,Php,Session,Multidimensional Array,我创建了一个非常简单的购物车,只需将商品添加到购物车中,然后从中删除商品并清空购物车。现在我知道我的代码中有很多问题,但我也在尝试解决它们 首先看看我的代码 if (isset($_SESSION['cart'])) { foreach ($_SESSION['cart'] as $c) { echo $c['name'] . '<br />'; echo $c['price'] . '<br />'; echo '

我创建了一个非常简单的购物车,只需将商品添加到购物车中,然后从中删除商品并清空购物车。现在我知道我的代码中有很多问题,但我也在尝试解决它们

首先看看我的代码

if (isset($_SESSION['cart'])) {
    foreach ($_SESSION['cart'] as $c) {
        echo $c['name'] . '<br />';
        echo $c['price'] . '<br />';
        echo '<a href="?pid=17&rc=' . $c['code'] . '">Remove item</a><br />';
    }
}


if (isset($_POST['buy'])) {
    //header("Location:?pid=18&pl=" . $pl);
    if (isset($_POST['buy'])) {
        $getData = $db->prepare('SELECT * FROM plans WHERE id=?');
        $getData->bind_param('i', $pl);
        if ($getData->execute()) {
            $res = $getData->get_result();
            if (($pn = $res->fetch_object()) !== null) {
                $proCode = rand(1, 100);

                $item['name'] = $pn->plan_name;
                $item['price'] = $pn->price_dollar;
                $item['code'] = $proCode;
                $_SESSION['cart'][] = $item;
            }
        }
    }
}

echo '<a href="?pid=17&ac=empty">Empty Cart</a>';

if (isset($_GET['rc']) && isset($_SESSION['cart'])) {
    $rem = $_GET['rc'];
    $ses = $_SESSION['cart'];

    foreach ($_SESSION['cart'] as $cartItem) {
        if ($cartItem["code"] == $rem) {
            unset($ses[$rem]);
        }
    }

    /*if (($key = array_search($rem, $ses)) !== false) {
        unset($ses[$key]);
    }*/
    var_dump($ses);
}

if (isset($_GET['ac']) == 'empty' && isset($_SESSION['cart'])) {
    unset($_SESSION['cart']);
}
目前,添加新产品对我来说效果不错,但问题是 当我试图从插入符号中删除一个项目时,该项目会返回,并且似乎没有发生任何事情,而该项目仍在购物车中

您正在取消设置$ses变量而不是$U会话

请看一下更新后的代码,你甚至不需要使用forloop,你可以像我下面所做的那样取消设置变量

 if (isset($_GET['rc']) && isset($_SESSION['cart'])) 
 {
    $rem = $_GET['rc'];    
    if(isset($_SESSION['cart'][$rem]))
    {
       unset($_SESSION['cart'][$rem]);
    }
}
如果这对你有帮助,请告诉我

编辑

请将“购买产品”功能更新为以下功能。。您正在对数组使用自动递增键。。它应该是产品代码的主键


尝试将删除周期更改为:

foreach ($_SESSION['cart'] as $key=>$cartItem) {
        if ($cartItem["code"] == $rem) {
            unset($_SESSION['cart'][$key]);
        }

如果不了解您的购物车作为一个整体是如何工作的,就很难回答这个问题。这可能是一些不同的问题,但如果不了解如何调用此脚本,就很难确定可能出现的错误。我的怀疑是,在您的delete中,您正在从$ses中删除该项目,而不是从$u会话中删除该项目,因此当您的购物车重新加载时,该项目仍在会话中。在没有看到整个模块的情况下无法确定。很抱歉,相同的结果注意到正在删除,并且通过ses与$\u会话['cart'相等的方式,项目仍然存在
foreach ($_SESSION['cart'] as $key=>$cartItem) {
        if ($cartItem["code"] == $rem) {
            unset($_SESSION['cart'][$key]);
        }