|
|
|
| Не получается сосчитать одновременно Количество и сумму товаров в сессии товаров корзины
Данные о занесенных товаров хранящиеся в Сеcсии выводятся циклом for
Проблема в том что выводится только результат сложения одной переменной (той которая стоит выше, $k += $_SESSION['zakaz'][$i][1] в данном случае), вторая обнуляется
Прошу помощи вот в чем: Как сделать что бы подсчет производился по обеим переменным
<?
for($i=0; $i<count($_SESSION['zakaz']); $i++)
$k += $_SESSION['zakaz'][$i][1]; //количество товара
$c += $_SESSION['zakaz'][$i][2]; //сумма товаров
echo "<div >
<p class='pcard '><a href='$absolute_url/Korzina' class='cardlinc'>Товаров в корзине ".$k." шт.</a><br/>
на сумму: <b>".number_format($c, 2, '.', ' ') ." руб</b></p> \n</div>
\n";
?>
|
| |
|
|
|
|
|
|
|
для: Dinya_1
(17.06.2012 в 16:47)
| | Товары в корзине, это их id, надо полагать. При этом одного товара может быть несколько штук, или нет? | |
|
|
|
|
|
|
|
для: confirm
(17.06.2012 в 16:51)
| | не, про id сдесь речь не идет (при всем уважении, )
В сесии на каждом id заложена информация о количестве товаров и о сумме
например:
id Наимен колич. Сум
1 Валенки 150шт 150 000 руб
2 Калоши 320шт 120 000 руб
Мне нужно сложить общее Количество и общ. сумму всех строк
Что бы было так
В вашей корзине Товаров 470шт на сумму 270 000руб. | |
|
|
|
|
|
|
|
для: Dinya_1
(17.06.2012 в 16:55)
| | >В сесии на каждом id ...
А эти id, что никакого отношения не имею к id товара? Вот массив товаров в корзине:
$cart = array(
12=> array('basket'=>4,'price'=>50),
10=> array('basket'=>4,'price'=>20),
124=>array('basket'=>2,'price'=>45),
223=>array('basket'=>1,'price'=>320),
102=>array('basket'=>5,'price'=>10)
);
|
Первый ключ это id товара, так как пользователь на странице выбирает не товара как таковой, а шлет вам id его. Каждый id содержит массив, где первый ключ, это сколько товаров в корзине, а второй цена за единицу товара (или сумма за количество товаров, если она при добавлении в корзину считается).
Как выглядит ваша корзина, покажите массив ее? И что, в корзине так и указаны строки " 150шт" и "150 000 руб"? | |
|
|
|
|
|
|
|
для: confirm
(17.06.2012 в 17:11)
| | Ой, все получилось. Там для цикла for просто нужно было добавить фигурные скобки.
confirm - Спасибо большое за ваше желание мне помочь! | |
|
|
|
|
|
|
|
для: Dinya_1
(17.06.2012 в 17:22)
| | Если у вас корзина человеческая, это значит имеет множество представлений, одно из них краткое (информативное, о котором вы и задаете вопрос), а подробное представление, это уже иное, значит корзина должна иметь необходимый минимум - id товара и его количество. Можно сумму за товары в нее положить (но это детали).
То есть выглядит так, как я показывал примером. Тогда чтобы получить информацию для краткого представления корзины, циклов и близко не надо, РНР имеет достаточно функций работы с массивами:
<?
$cart = array(
12=> array('basket'=>4,'price'=>50),
10=> array('basket'=>4,'price'=>20),
124=>array('basket'=>2,'price'=>45),
223=>array('basket'=>1,'price'=>320),
102=>array('basket'=>5,'price'=>10)
);
echo '<pre>';
//это товары корзины
print_r(array_map('current',$cart));
//а это их количество
echo '<br>Товаров: '.array_sum(array_map('current',$cart)).' шт.';
//это цена за товары
print_r(array_map('end',$cart));
//а это общая сумма
echo '<br>На сумму: '.array_sum(array_map('end',$cart)).' руб.';
|
| |
|
|
|