глюки в сессиях

D0ceNT

Guest
глюки в сессиях

заметил некоторый глюк, то есть подозреваю что так поидее и должно быть, но все же хотелось бы уточнить.

Я делаю корзину для интрнет-магазина, использую $_SESSION для занесения в нее id товара и его количество. Происходит это вот так:
$_SESSION["tovar[$id]"]=$id; // заносим id товара
$_SESSION["kolvo[$q]"]=$q; // заносим количество

проход по массиву происходит вот таким способом:
foreach ($_SESSION as $key => $value)
{
...
}

скрипту $id и $q передается через коммандную строку.
Все вроде работает, но есть проблемма - в массив не заносятся одинаковые значения. То есть если например, какого-то одного товара положили 2 штуки, и столько же хотят другого товара, то второй раз 2 уже не заносится. То же самое и товара касается, если заносим еще раз такой же id, то он не записывается. А надо бы чтобы было что-то вроде этого:
id: 21 кол: 1
id: 33 кол: 1
id: 10 кол: 3
id: 21 кол: 2
и т.д.

на текущий момент у меня получается нечто подобное
id: 21 кол: 1
id: 33 кол:
id: 10 кол: 3
id: кол: 2
что не есть хорошо.... подскажите как эту проблемму решить?
 

ForJest

- свежая кровь
сесси тут не при чем.
Тебе нужно выбрать подходящую структуру данных
попробуй сделай
$arr[] = array("tovar"=>$id, "kolvo"=>$q);
 

PhpGuest

Guest
$_SESSION["tovar"][$id]=$q;

...

foreach ($_SESSION["tovar"] as $k=>$v){
...
}


?
 

D0ceNT

Guest
Автор оригинала: PhpGuest
$_SESSION["tovar"][$id]=$q;

...

foreach ($_SESSION["tovar"] as $k=>$v){
...
}


?
Ага, вот это почти то что надо. Спасибо. Единственное, только как бы сделать такую шнягу, что если один товар уже есть сколько-то, и мы еще раз тот же товар заносим, но в другом количестве (или в том же), чтобы это число не перезаписывало предыдущее, а плюсовалось к тому количеству, которое уже было?
 

PhpGuest

Guest
Originally posted by D0ceNT
Ага, вот это почти то что надо. Спасибо. Единственное, только как бы сделать такую шнягу, что если один товар уже есть сколько-то, и мы еще раз тот же товар заносим, но в другом количестве (или в том же), чтобы это число не перезаписывало предыдущее, а плюсовалось к тому количеству, которое уже было?
@$_SESSION["tovar"][$id]+=$q;
 

D0ceNT

Guest
а как бы еще сделать чтобы конкретный товар можно было удалить из этого массива. unset как я полагаю только если весь массив сотрет. Или я не прав?
 
Сверху