Как добавить новые товары в корзину и просмотреть их с помощью php?

Я пытаюсь передать данные со страницы продукта на страницу корзины с помощью массива. Есть несколько атрибутов, которые viewcart.php получит с предыдущей страницы (цена, ссылка, заголовок и продавец). Я хотел бы сохранить их все, используя массив. Для каждого дополнительного элемента, который клиент добавляет в корзину, я пытаюсь получить переменную счетчика ($i) для увеличения массива $_SESSION['cart'][$i]['attribute']. Как мне это сделать?

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

<?php

  // The shopping cart needs sessions, so start one
  session_start();

  @$link = $_GET['link'];
$price = $_GET['price'];
$title = $_GET['title'];
$retailer = $_GET['retailer'];


  if($link) {
    //new item selected
    if(!isset($_SESSION['cart'])) {
      $_SESSION['cart'] = array();
      $_SESSION['items'] = 0;
      $_SESSION['total_price'] ='0.00';
    }

    if(isset($_SESSION['cart'][$link])) {
      $_SESSION['cart'][$link]++;
    } else {
      $_SESSION['cart'][$link] = 1;
    }


  }

  if(($_SESSION['cart']) && (array_count_values($_SESSION['cart']))) {
    echo " in your cart and we're working to display them";
  } 
  else {
    echo "<p>There are no items in your cart</p><hr/>";
  }

?>

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

for ($x=0; $x<=$i; $i++)
  {
  echo "The price is " . $_SESSION['cart'][$x][price] . "  Retailer is " . $_SESSION['cart'][$x]    [retailer] . "<br>";
  }

3 ответа

Решение

Самый простой способ сделать это - создать таблицу temp_cart в вашей базе данных..., в которой вы должны хранить элементы, которые пользователь добавляет в корзину. Затем на странице оформления заказа... вы можете просто отобразить их с помощью запроса select. Таким образом, вам будет проще разрешить пользователю редактировать свою корзину на странице viewcart.php.

Вы могли бы: иметь другую переменную сеанса со счетчиком и увеличивать ее при каждом добавлении?

Или же

$i= Count($_SESSION['cart'])+1;

Или же

Не указывайте индекс вообще:

$ tmp ["cart"] ["retailer"] = "123"; И т. Д.

$ _SESSION ['cart'] [] = $ tmp ["cart"];

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

Мне не нравится, как ты это делаешь. Управление сессиями очень просто для тележек. Держите вашу сессию как можно более легкой. Хранение цены в сессии - очень плохой способ, так как им легко манипулировать.

Вот простой пример того, что вы можете использовать.

if(isset($_SESSION['items'][$_GET['item_id']])) {
    $_SESSION['items'][$_GET['item_id']]++; //add one to the total count
} else {
    $_SESSION['items'][$_GET['item_id']] = 1; //If added for the first time
}

Теперь обработайте это

foreach($_SESSION['items'] as $id => $count) {
     echo $id; // product id
     echo $count; // product count
}

PS: не забудьте санировать вход. Я пропустил это

Другие вопросы по тегам