[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: многомерный, Ассоциативный массив в сессии
kuzroman
Привет всем, опять я к вам за помощью.
Создаю я значит такой массив в сессии:

 $zapros = "SELECT * FROM unit_tb_pxel WHERE id_unit = '$idTovar' ";
$result_zapros = mysql_query ($zapros,$lnk);

$id_unit_k=@mysql_result($result_zapros,0,'id_unit' );
$firma_unit_k=@mysql_result($result_zapros,0,'firma_unit' );
$name_k=@mysql_result($result_zapros,0,'name' );
$price_k=@mysql_result($result_zapros,0,'price' );

$_SESSION['korzina'][$idTovar][id_unit] = $id_unit_k ;
$_SESSION['korzina'][$idTovar][firma_unit] = $firma_unit_k ;
$_SESSION['korzina'][$idTovar][name] = $name_k ;
$_SESSION['korzina'][$idTovar][price] = $price_k ;


Подскажите, как мне суммировать все ключи [price] ?



Спустя 1 час, 6 минут, 55 секунд (21.12.2010 - 18:12) ИНСИ написал(а):
kuzroman ужас!!!! Ты уже не первый, кто тут подавляет ошибки.... Делай код без этого!

Спустя 3 минуты, 30 секунд (21.12.2010 - 18:16) ИНСИ написал(а):
kuzroman вообще, твой код можно вот так сократить:
$rows = mysql_query("SELECT * FROM `unit_tb_pxel` WHERE `id_unit` = '{$idTovar}' ");
if($data = mysql_fetch_assoc($rows)) {
$_SESSION['korzina'][$idTovar] = $data;
}

Спустя 5 минут, 2 секунды (21.12.2010 - 18:21) ИНСИ написал(а):
Цитата
Подскажите, как мне суммировать все ключи [price] ?

там же у тебя в запросе идет WHERE, вернется одно значение значит....

Спустя 3 минуты, 46 секунд (21.12.2010 - 18:25) kuzroman написал(а):
Спасибо за ответ. Сделал как вы сказали,

$price = 0;
foreach($_SESSION['korzina'][$idTovar]['price'] as $data) { $price = $price + $data; }
echo "Сумма: $price ";

в итоге сумма = 0, т.е. функция foreach не видит или не обрабатывает
$_SESSION['korzina'][$idTovar]['price']

кстати попытка вывести на экран print_r($_SESSION['korzina'][$idTovar]['price'] ) ;
тоже закончилась неудачей - пусто;

зато когда пишу print_r($_SESSION['korzina']) ; выводит вот это:
Array ( [8452] => Array ( [id_unit] => 8452 [firma_unit] => Canon [name] => Extension tube EF-12 II [price] => 4490.00 ) )

Может еще есть идеи?

Спустя 7 минут, 30 секунд (21.12.2010 - 18:32) ИНСИ написал(а):
kuzroman у тебя возвращается всего 1 запись? или их много?


Спустя 1 минута, 32 секунды (21.12.2010 - 18:34) kuzroman написал(а):
да как сделаю так и вернется. т.е. если несколько товаров добавляю, то выводится вот это:

Array ( [20175] => Array ( [id_unit] => 20175 [firma_unit] => Sanyo [name] => ICR-FP400 [price] => 1725.00 ) [16506] => Array ( [id_unit] => 16506 [firma_unit] => Sony [name] => 8GB Memory Stick Pro Duo High Speed [price] => 2000.00 ) [15658] => Array ( [id_unit] => 15658 [firma_unit] => Logitech [name] => MX620 cordless Laser PS/2+USB RTL (910-000241) [price] => 1900.00 ) ) Сумма: 0

здесь 3 товара. )) Но сумма то все равно не меняется(

Спустя 1 минута, 10 секунд (21.12.2010 - 18:35) kuzroman написал(а):
здесь идет

  print_r($_SESSION['korzina']) ;


а потом

$price = 0;
foreach($_SESSION['korzina'][8452]['price'] as $data) { $price = $price + $data; }
echo "Сумма: $price ";

Спустя 2 минуты, 1 секунда (21.12.2010 - 18:37) inpost написал(а):
foreach для общей корзины, где ключем у тебя будет idTovara.
Внутри слаживаешь: $sum += $_SESSION['korzina'][ключ][price];

Спустя 6 минут, 40 секунд (21.12.2010 - 18:43) kuzroman написал(а):
вы мне лучше подскажите как мне вывести на экран хотя бы 1 price, я бы потом сложил))

делаю
print_r(   $_SESSION['korzina'][12345][price]   ) ; 


12345 уже явно пишу то что в переменной в массиве $idTovar . И ничего не выводит гад.

Спустя 7 минут, 41 секунда (21.12.2010 - 18:51) kuzroman написал(а):
делаю так:
$sum += $_SESSION['korzina'][$idTovar][price];
echo"<br>2) $sum";
он выводит цену последнего товара из массива.

Спустя 1 минута, 58 секунд (21.12.2010 - 18:53) sharki написал(а):
kuzroman
Вообще, грамотнее было бы по другому сделать, а именно:
$_SESSION['korzina']['id_tovara']['kol_vo']

И потом ты бы просто доставал из БД данные по каждому товару в цикле и и там хоть плюсуй хоть вычитай хоть удаляй, т.е цены ты получаешь из БД а не из массива.

Спустя 4 минуты, 48 секунд (21.12.2010 - 18:58) kuzroman написал(а):
Ну да это идея, ща сделаю))

Спустя 40 секунд (21.12.2010 - 18:59) inpost написал(а):
КАКОГО: $idTovar,
Тебе надо ключ вызывать!
И в начале: $sum = 0;

Спустя 47 секунд (21.12.2010 - 18:59) ИНСИ написал(а):
kuzroman сделай вот так:
$price = 0;
$rows = mysql_query("SELECT * FROM `unit_tb_pxel` ");
while($data = mysql_fetch_assoc($rows)) {
$price = $price + $data['price'];
}

echo $price;


Спустя 4 минуты, 48 секунд (21.12.2010 - 19:04) ИНСИ написал(а):
и тебе немного работы оставил, теперь вместо переменной создай сессию и в нее заноси все цены smile.gif

Спустя 9 минут, 51 секунда (21.12.2010 - 19:14) kuzroman написал(а):
Всем спасибо.
Думаю продолжу завтра.
Вообще вориант который предложил sharki оптимальный.
Но все же и до сути докапаться хочется, почему и что я делал неправильно.

До связи.


_____________
kuzroman@list.ru
Быстрый ответ:

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