Форум → Программирование → PHP для идиотов → Корзина(интернет-магазина) на Cookie
Корзина(интернет-магазина) на Cookie
Страницы: ← Предыдущая страница • Следующая страница →
-
22 августа 2007 г. 17:37, спустя 11 минут 12 секунд
ты не обращай внимание, он курит бамбук =)
ты понял чо как делать?все умрут, а я изумруд -
22 августа 2007 г. 20:59, спустя 3 часа 22 минуты 14 секунд
1.
foreach ($_SESSION['cart'] as $pkey => $pgoods)
2.
{
3.
// $del_id — id записи, который мы передаём, чтобы удалить её
4.
if ($pgoods['id'] == $del_if)
5.
{
6.
$_SESSION['cart'] = delArrayElementByKey($_SESSION['cart'], $pkey);
7.
break;
8.
}
9.
}
Я так понял по этому мы удаляем один из товаров? -
22 августа 2007 г. 22:34, спустя 1 час 34 минуты 22 секунды
Просто решил потестить<?php
@session_start();
include "db.php";
$db = new DB("localhost","root","","medical");
if(!$db->open())
{
die($db->error());
}
if(!$db->query("SELECT * FROM wares"))
{
die($db->error());
}
switch(@$_GET['action'])
{ //start switch GET ID
case "add_basket":
$_SESSION['cart'][] = array("'id' => '{$_GET['wares_id']}','count' => '2'");
break;
default:
print "<a href=\"?action=basket\">Ваша корзина</a> | <a href=\"?action=clean_basket\">Очистить корзину</a><br /><br />";
while($row = $db->fetchArray())
{
print "{$row['name']} - {$row['price']} руб. - <a href=\"?action=add_basket&wares_id=".$row['id']."\">Добавить в корзину</a><br />";
}
break;
case "basket":
if($_SESSION['cart'])
{
print $_SESSION['cart']['0']['id'];
}
else
{
print "Пуста";
}
break;
case "clean_basket":
$_SESSION['cart'] = array();
break;
} //end switch GET ID
$db->freeResult();
$db->close();
?>
Добавляю в корзину,нажимаю просмотреть корзину…ошибка…
31 .print $_SESSION['cart']['0']['id'];
Undefined index: id in z:\home\light.p\www\index.php on line 31
Поидее должно же правильно выводить значение 0-ль в массиве. -
22 августа 2007 г. 23:32, спустя 58 минут 17 секунд
@session_start();
зачхэм сабак ставыш, э?
выведи простоprint_r($_SESSION['cart']);
посмотри, что там
ты почаще выводи переменные и отслеживай, что в них на каждом этапе работы скриптавсе умрут, а я изумруд -
25 августа 2007 г. 21:09, спустя 2 дня 21 час 36 минут
case "basket":
if($_SESSION['cart'])
{
foreach ($_SESSION['cart'] as $key => $value )
{
foreach ($value as $a => $b)
{
print $b.'<br />';
}
}
print "<br />";
print_r($_SESSION['cart']);
}
else
{
print "Пуста";
}
break;
Собственно код для разбора вот такого массиваArray
(
[0] => Array
(
[0] => 'id' => '1','count' => '2'
)
[1] => Array
(
[0] => 'id' => '2','count' => '2'
)
)
Код выводит следующее
'id' => '1','count' => '2'
'id' => '2','count' => '2'
Что то всбрело в голову сделать так -print $b['9'].'<br />';
Гы…извлек ID'ы но наркоманский способ какойто…
Собственно надо id извлечь
'id' => '1','count' => '2'
'id' => '2','count' => '2' -
26 августа 2007 г. 11:40, спустя 14 часов 31 минуту 18 секунд
пример вывода товаров корзины построчно:
массив у нас такой:
$_SESSION['cart'] = array(
0 => array('id' => 1, 'count' => 2),
1 => array('id' => 2, 'count' => 2)
);
а выводить будем так:
foreach ($_SESSION['cart'] as $key => $item)
{
// так вот массив $item тут и есть отдельный товар
print 'ID товара: <b>' . $item['id'] . '</b>; его количество: <b>' . $item['count'] . '</b><br />';
}все умрут, а я изумруд -
26 августа 2007 г. 19:42, спустя 8 часов 1 минуту 40 секунд
Эм…может кто подскажет как вывести кол-во элементов в массиве…допустим…
Array
(
[0] => Array
(
[id] => 1
[count] => 2
)
[1] => Array
(
[id] => 2
[count] => 2
)
)
Кол-во элементов в массиве - 2
Поюзал функцию array_count_values()
Вроде не то… -
26 августа 2007 г. 20:55, спустя 1 час 13 минут 43 секунды
тебе надо вывести общее кол-во товаров в корзине?
я ж тебе сказал, при добавлении/удалении товаров - обновляй переменную $_SESSION['cart_count']
в ней и храни кол-во
также можно завести $_SESSION['cart_summ'], где хранить общую сумму
это оградит тебя от пересчитывания при каждой загрузкевсе умрут, а я изумруд -
-
26 августа 2007 г. 22:12, спустя 16 минут 57 секунд
зы…уберите карму =)
почему?все умрут, а я изумруд -
26 августа 2007 г. 22:29, спустя 16 минут 31 секунду
зы…уберите карму =)
почему?
Кто то тупо…добавляет,захочет убавит(причем без причины).
Лучше уж совсем её не иметь.
Или ставить когда и кем + можно и за что -
26 августа 2007 г. 22:40, спустя 10 минут 32 секунды
Или ставить когда и кем + можно и за что
Паш это уже есть в планах :) и скоро будетhttps://smappi.org/ - платформа по созданию API на все случаи жизни -
31 августа 2007 г. 13:33, спустя 4 дня 14 часов 53 минуты
тебе надо вывести общее кол-во товаров в корзине?
я ж тебе сказал, при добавлении/удалении товаров - обновляй переменную $_SESSION['cart_count']
в ней и храни кол-во
также можно завести $_SESSION['cart_summ'], где хранить общую сумму
это оградит тебя от пересчитывания при каждой загрузке
md5,а как быть если магазин работает со скидками?
Вечно деребить $_SESSION['cart_summ'] и $_SESSION['cart_count']?
Допустим в магазине акция - купи 4-е карандаша и получи 20% скидку.
Каждый карандаш стоит 5-ть рублей.
Положили карандаш в корзину - Итог:5 рублей.
массив так выглядит$_SESSION['cart'] = array(
0 => array('id' => Карандаш, 'count' => 1)
);
Второй положили…нужно думаю перезаписать массив$_SESSION['cart'] = array(
0 => array('id' => Карандаш, 'count' => 2)
);
Поправка!Переписывать count поверх буду с помощью array_key_exists();?
А то будет создаваться новый массив в таком вид,что в принципе не хочется.$_SESSION['cart'] = array(
0 => array('id' => Карандаш, 'count' => 1),
1 => array('id' => Карандаш, 'count' => 1)
);
Продолжаем.Так,заказал я 4-е карандаша.Поидее должна скидочка 20%.Но как сказал md5 держи все в отдельной сессии.
Как дальше то быть? -
31 августа 2007 г. 14:34, спустя 1 час 27 секунд
Поправка!Переписывать count поверх буду с помощью array_key_exists();?
А то будет создаваться новый массив в таком вид,что в принципе не хочется.
ты проходишь по массиву, смотришь если ли уже товар такой в корзине, если есть прибавляешь к его кол-вуПродолжаем.Так,заказал я 4-е карандаша.Поидее должна скидочка 20%.Но как сказал md5 держи все в отдельной сессии.
Как дальше то быть?
в твоей ситуации просто:if ($_SESSION['cart_count'] > 4)
$order_summ = $_SESSION['cart_summ'] * 0.8;
математика была в школе? =)
ps. у меня такое чувство, что из этого простого примера ты хочешь сделать полноценнейшый инет магазин со всеми возможными мульками!все умрут, а я изумруд -
31 августа 2007 г. 15:21, спустя 47 минут 14 секунд
Один магазин делает, лругой в соседнем топике игрушку браузерную :)
Что будет следующим? )))from TRIAL with LOVE
Страницы: ← Предыдущая страница • Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!