[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Корзина товаров
ppaull
Решил сделать магазин с нуля. С каталогом все ОК, а с корзиной туговато идет... Нужно, чтобы данные кв корзине хранились только во время сессии.

Вот пока что вышло:

<?php
session_start();
$_SESSION['cart'][$_POST['code']] = $_POST['kolvo'];
$_SESSION['cena'][$_POST['code']] = $_POST['cena']*$_POST['kolvo'];
$_SESSION['c'][$_POST['code']] = $_POST['tovar'];
if(isset($_POST['del']))
{
unset($_SESSION['cart'][$_POST['del']]);
unset($_SESSION['cena'][$_POST['del']]);
}
$cena=$_SESSION['cena'];
?>
<table>
<
tr><td>Наименование</td><td>Количество</td></tr>
<?php
foreach ($_SESSION['c'] as $code => $tovar) {


foreach ($_SESSION['cart'] as $cod => $kolvo)
{
if(($cod==$code)&&($cod!=""))
{
echo "<form method='post'><tr><td>$tovar</td><td><input type='text' name='kol' value='".$kolvo."'></td><td><form method='post'><input type='hidden' name='del' value='".$code."'><input type='submit' value='del'></td></tr></form>";}
}

}

?>
<tr><td colspan="2"><?php echo "товаров на сумму: " .array_sum($cena). " грн."; ?></td></tr>
</
table>
<
form method="POST">
<
input type="text" name="tovar" value="Товар 1"/>
<
input type="text" name="kolvo" value="1"/>шт.
<
input type="hidden" name="code" value="001" />
<
input type="text" name="cena" value="10" />
<
input name="submit" type="submit" value="Добавить" />
</
form>

<
form method="POST">
<
input type="text" name="tovar" value="Товар 2"/>
<
input type="text" name="kolvo" value="1"/>шт.
<
input type="hidden" name="code" value="002" />
<
input type="text" name="cena" value="100" />
<
input name="submit" type="submit" value="Добавить" />
</
form>

<
form method="POST">
<
input type="text" name="tovar" value="Товар 3"/>
<
input type="text" name="kolvo" value="1"/>шт.
<
input type="hidden" name="code" value="003" />
<
input type="text" name="cena" value="50" />
<
input name="submit" type="submit" value="Добавить" />
</
form>


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



Спустя 2 часа, 27 минут, 54 секунды (14.07.2010 - 21:29) jalvar написал(а):
тут бд надо как максимум. Минимум писать уже не 1 файл а целую cms!

Спустя 23 минуты, 52 секунды (14.07.2010 - 21:52) ppaull написал(а):
Я знаю. База уже есть. На ней каталог товаров построил. Теперь корзину делаю. Это просто тестовый вариант, а реально данные будут браться из базы данных.

..... вопрос уже отпал - все получилось.

Спустя 1 час, 7 минут, 51 секунда (14.07.2010 - 23:00) tomash написал(а):
А кто мешает хранить массив в сессии

Спустя 14 часов, 19 минут, 8 секунд (15.07.2010 - 13:19) linker написал(а):
Вот это вот
$_SESSION['cart'][$_POST['code']] = $_POST['kolvo'];
$_SESSION['cena'][$_POST['code']] = $_POST['cena']*$_POST['kolvo'];
$_SESSION['c'][$_POST['code']] = $_POST['tovar'];
if(isset($_POST['del']))
{
unset($_SESSION['cart'][$_POST['del']]);
unset($_SESSION['cena'][$_POST['del']]);
}
извините, какая-то ерунда. Добавление, удаление товара из корзины лучше вынести в отдельные скрипты. Список товаров корзине лучше хранить в виде структурированного массива, аля
Array(
[Tovars] => Array(
[123] => 2 // 123 - ID товара, 2 - количество
[456] => 1
)
)
Чтобы получить список товаров
// Выгребаем из базы описания нужных товаров
$Result = mysql_query("select * from tovarts where tovar_id in (" . join(',', array_keys($_SESSION['Tovars'])) . ")");
while($Tovar = mysql_fetch_assoc($Result))
{
$Count = $_SESSION['Tovars'][$Tovar['tovar_id']];
echo 'Товар ' . $Tovar['tovar_name'] . ' в количестве ' . $Count . ' шт. за цену ' . ($Count * $Tovar['tovar_cost']) . ' грн.';
}
Добавляем товар
if (!isset($_POST['TovarId'])) die('Товар отсутствует');
$TovarId = abs((integer)$_POST['TovarsId']);
if (isset($_SESSION['Tovars'][$TovarId]))
$_SESSION['Tovars'][$TovarId] ++;
else
$_SESSION['Tovars'][$TovarId] = 1;
Удаляем товар
if (!isset($_POST['TovarId'])) die('Товар отсутствует');
$TovarId = abs((integer)$_POST['TovarsId']);
if (isset($_SESSION['Tovars'][$TovarId]))
{
$_SESSION['Tovars'][$TovarId] --;
if ($_SESSION['Tovars'][$TovarId] == 0)
unset($_SESSION['Tovars'][$TovarId]);
}

Спустя 3 часа, 46 минут, 16 секунд (15.07.2010 - 17:06) ppaull написал(а):
linker
Спасибо большое! Буду разбираться.

Спустя 1 год, 8 месяцев, 17 дней, 20 часов, 12 минут, 40 секунд (3.04.2012 - 13:18) ulot3049 написал(а):
Посмотрите тут:
Корзина товаров и оформление заказа
Подробное описания процесса реализации корзины. И интернет амгазина на php в целом с нуля.
tongue.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.