使用PHP创建简单的购物车

时间:2015-04-14 14:19:36

标签: php arrays session

我正在努力创建一个非常简单的shopping cart 我使用sessionarray将项目添加到array并将array保存到session并显示此session中的项目好像喜欢 第1项名称 - 价格 第2项名称 - 价格 然后将总金额计入我的付款方式。

这是我正在使用的代码。

 print_r($_SESSION['cart']);


if (isset($_POST['buy'])) {
    //header("Location:?pid=18&pl=" . $pl);
    $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()) {

            $item['name'] = $pn->plan_name;
            $item['price'] = $pn->price_dollar;
            if (isset($_SESSION['cart'])) {
                $_SESSION['cart'] = $item;
            }
        }
    }
}

问题 ( ! ) Notice: Undefined index: cart

修改

这就是我的结尾

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 = range(1, 100);
                shuffle($proCode);

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

if (isset($_GET['rc']) && isset($_SESSION['cart'])) {
    $rem = $_GET['rc'];
    if (($key = array_search($rem, $_SESSION['cart'])) !== false) {
        unset($_SESSION['cart'][$key]);
    }
}
  

但仍然删除无效

1 个答案:

答案 0 :(得分:0)

正如我所看到的,您正在尝试打印未设置的变量。另外,使用此代码:

if (isset($_SESSION['cart'])) {
    $_SESSION['cart'] = $item;
}

您永远无法将商品添加到购物车。我这样做的方法如下:

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()) {

            $item['name'] = $pn->plan_name;
            $item['price'] = $pn->price_dollar;

            $_SESSION['cart'][] = $item;
        }
    }
}

这样,即使未设置cart键,也会设置它。同时,它允许您在购物车中放置多个商品。

编辑:接下来要做的是,如果您想要展示您的商品,请执行以下操作:

foreach ($_SESSION['cart'] as $k => $item) {
    echo "item $item->id $item->plan_name -- $item->price_dollar";
}