Как добавить новые элементы в корзину и просмотреть их для отображения с помощью 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>";
  }

person sharataka    schedule 28.02.2012    source источник


Ответы (3)


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

person Faraz    schedule 28.02.2012

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

Or

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

Or

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

$tmp["корзина"]["продавец"] = "123"; И т.д..

$_SESSION['корзина'][] = $tmp["корзина"];

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

person Lock    schedule 28.02.2012

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

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

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
}

P.S. Не забудьте дезинфицировать ввод. Я пропустил это

person Starx    schedule 28.02.2012