Интернет магазин. Хранение корзины товаров.

Lemming

Новичок
Интернет магазин. Хранение корзины товаров.

Привет.

Я тут подумал, а если сделать хранение этой корзины в Mysql. Впринципе алгоритм данной работы мне понятен.
Человек добавляет товар. В базу записывается ID этого товара, ID сессии пользователя, Наименование товара, кол-во, размеры и цена.

По ID пользователя можно выполнять все необходимые операции с корзиной, удаление товара, изменение кол-ва товаров.

Все вроде нормально, НО если покупатель закрыл окно браузера. Как почистить за ним корзину?
 

_RVK_

Новичок
1. Почему бы не хранить корзину в сессии?
2. Почему бы не завести каждому пользователю "свою" корзину, идентифицируя её либо по ID пользователя в базе, либо по куке.
3. Можно удалять старые записи, например по прошествии суток.
 

an_kalinovski

Новичок
А зачем чистить? Часто корзину хранят в кукисах и показывают во время следующего визита, тебе этого делать вообще не надо (в смысле не из кукисов надо доставать а из базы) . Пусть лежит инфа, пока пользователь насильно не почистит корзину сам или товары в ней например по таймаутут не протухнут...
 

Quessir

Новичок
А зачем тебе "Наименование товара, кол-во, размеры и цена", если у тебя есть ID этого товара.
 

Lemming

Новичок
Автор оригинала: Quessir
А зачем тебе "Наименование товара, кол-во, размеры и цена", если у тебя есть ID этого товара.
Один ID товара может содержать в себе много Размеров. разделются они ","

Например Товар1;45,46,47;

Должна быть возможность заказать 3 шт Товара1 45 размера и 2 штуки этогоже товара только 47 размера. Все я это сделал.

если Делать сессиями то получается нужен двух мерный масив ну например

PHP:
<?
     $_SESSION['ID']['SIZE'];
?>
Как я понял другого выхода нет...
 

Lemming

Новичок
Автор оригинала: _RVK_
И не нужно. Если нет нестандартных требований к корзине, то храни её в сесси.
Щас покубатурил. Короче надо массив делать такой:

PHP:
<? 
     $_SESSION['ID']['SIZE']['kolvo_tovara']; 
?>
Трех мерный массив не получается сделать.

Пробую вот так

PHP:
<? 
          Array ( [23] => Array ( [size] => 40,44,46 [count] => 4,5,10 ) ) 
?>
Получается что для товара №23 мы имеем 4 штуки 40 размера, 5 штук 44 и 10 46 размера. Как-то это все муторно модет можно проще.
 

_RVK_

Новичок
Трех мерный массив не получается сделать
В пхп нет многомерных массивов. В пхп есть массивы массивов!

$_SESSION = array(
1 => array(40 => 2, 43 => 1);
);

Это товар с ID = 1. Заказано 2 - 40-х размера и 1 - 43 размер
 

Lemming

Новичок
Автор оригинала: _RVK_
В пхп нет многомерных массивов. В пхп есть массивы массивов!

$_SESSION = array(
1 => array(40 => 2, 43 => 1);
);

Это товар с ID = 1. Заказано 2 - 40-х размера и 1 - 43 размер
Интересно как задать такой массив? ... Чтоб работало в сессии. Голову ломаю ни чего придумать не могу


Короче приходет $_POST запрос с размерами и колво товаров.

обрабатываю его foreach. И как эти знасения записать в Сессиию.

Как создать массив в масеве?

Есть соображения?
 

Фанат

oncle terrible
Команда форума
у тебя проблема в том, что разные размеры не имеют своих id
то есть, у тебя нет уникальной идентификации конечного товара.
а сессии тут не при чём.
 

Фанат

oncle terrible
Команда форума
ну и какая проблема "задать такой массив"?
как ты пытался?
 

Lemming

Новичок
$_SESSION[$id][$k] = $v;

-~{}~ 24.07.06 19:38:

Я не совсем понимаю массив в массиве. Чтото я делаю не так.
 

Фанат

oncle terrible
Команда форума
для начала забудь про $_SESSION
сессия не равна корзине.
делаешь переменную $cart, а потом её кладёшь в сессию.
дальше.
какая проблема положить в $cart массив?
 

Lemming

Новичок
PHP:
$cart[$id][$k] = $v;
$_SESSION['good'] = $cart;
Сделал. Так вроде работает. Только почемуто $_SESSION['good'] .

Только на любых других страницах сайта массив $_SESSION почемуто пуст.
 

Lemming

Новичок
$_SESSION[] = $cart;

При по пытке забить второй товар , он не добавляет запись а меняет её.
чтото не то ..
Array ( [23] => Array ( [40] => 2 [44] => 2 ) )

какже сделать то

-~{}~ 24.07.06 20:04:

PHP:
$id = $_GET['good_id'];
foreach ($_POST['size'] as $k => $v) {
                   IF ($_POST['size'][$k]){
                            $cart[$id][$k] = $v;	
	   }
}
		$_SESSION[] = $cart;
вот такой PHP код
 

Фанат

oncle terrible
Команда форума
О господи
ОТКУДА ТЫ ЭТО ВЗЯЛ???
у тебя же было написано $_SESSION['good'] = $cart;

Куда оно делось?!
ты добавляешь не в $_SESSION
А в $_SESSION['good']!!!

-~{}~ 24.07.06 20:06:

блин сказали тебе - СНАЧАЛА всё собрать в $cart, а только потом записать $cart В сессию!
ты понимаешь, что здесь написано? или нет?
 

Lemming

Новичок
$_SESSION['good'][] = $cart;

Так получилось. Все ок. Мда протупил немного ..

Большой респект тебе !

-~{}~ 24.07.06 20:19:

Array ( [good] => Array ( [0] => Array ( [24] => Array ( [43] => 3 [44] => 2 ) ) [1] => Array ( [23] => Array ( [40] => 1 [47] => 4 ) )

Получилось .. А теперь как например взять все ID товара из этого массива. Чето со мной совсем нето
 
Сверху