Как добавить новые товары в корзину и просмотреть их с помощью php? - PullRequest
2 голосов
/ 28 февраля 2012

Я пытаюсь передать данные со страницы продукта на страницу корзины с помощью массива.Есть несколько атрибутов, которые 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 ]

0 голосов
/ 28 февраля 2012

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

0 голосов
/ 28 февраля 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
}

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

0 голосов
/ 28 февраля 2012

Вы могли бы: Есть еще одна переменная сеанса со счетчиком, и каждый шаг увеличивается на единицу?

Или

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

Или

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

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

$ _ SESSION ['cart'] [] = $ tmp ["cart"];

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

...