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