PHP удалить элемент из корзины покупок

Вопрос: Я создал очень простую корзину покупок, которая просто добавляет элемент к ней и удаляет элементы из нее и пустую корзину теперь. Я знаю, что у меня много проблем в моем коде, но я также пытаюсь их исправить сначала посмотри мой код if (isset($_SESSION['cart'])) { foreach ($_SESSION['cart'] as $c) { echo $c['name'] . '';

Вопрос:

Я создал очень простую корзину покупок, которая просто добавляет элемент к ней и удаляет элементы из нее и пустую корзину теперь. Я знаю, что у меня много проблем в моем коде, но я также пытаюсь их исправить

сначала посмотри мой код

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’]); }

на данный момент добавление новых продуктов отлично работает со мной, но проблема возникает, когда я пытаюсь удалить один элемент из каретки, которую он возвращает назад, и, похоже, это произошло, а элемент все еще есть в корзине

Лучший ответ:

попробуйте изменить цикл удаления на это:

foreach ($_SESSION[‘cart’] as $key=>$cartItem) { if ($cartItem[«code»] == $rem) { unset($_SESSION[‘cart’][$key]); } Ответ №1

вы отменяете переменную $ses не $_SESSION…

Пожалуйста, посмотрите обновленный код, вам даже не нужно использовать forloop, вы можете просто unset переменную, как я сделал ниже

if (isset($_GET[‘rc’]) && isset($_SESSION[‘cart’])) { $rem = $_GET[‘rc’]; if(isset($_SESSION[‘cart’][$rem])) { unset($_SESSION[‘cart’][$rem]); } }

сообщите мне, если это поможет вам

РЕДАКТИРОВАТЬ

Пожалуйста, обновите свою функцию продукта покупки ниже единицы. Вы используете auto increament key for array. Он должен быть основным ключом (здесь ваш код продукта)

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’][$proCode] = $item; } } } }

Оцените статью
Добавить комментарий