Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Не получается суммировать одновременно занесенные в сессию
 
 автор: Dinya_1   (17.06.2012 в 16:47)   письмо автору
 
 

Не получается сосчитать одновременно Количество и сумму товаров в сессии товаров корзины

Данные о занесенных товаров хранящиеся в Се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($c2'.'' ') ." руб</b></p> \n</div>
   \n"
;

?>



  Ответить  
 
 автор: confirm   (17.06.2012 в 16:51)   письмо автору
 
   для: Dinya_1   (17.06.2012 в 16:47)
 

Товары в корзине, это их id, надо полагать. При этом одного товара может быть несколько штук, или нет?

  Ответить  
 
 автор: Dinya_1   (17.06.2012 в 16:55)   письмо автору
 
   для: confirm   (17.06.2012 в 16:51)
 

не, про id сдесь речь не идет (при всем уважении, )
В сесии на каждом id заложена информация о количестве товаров и о сумме

например:
id Наимен колич. Сум
1 Валенки 150шт 150 000 руб
2 Калоши 320шт 120 000 руб


Мне нужно сложить общее Количество и общ. сумму всех строк

Что бы было так

В вашей корзине Товаров 470шт на сумму 270 000руб.

  Ответить  
 
 автор: confirm   (17.06.2012 в 17:11)   письмо автору
 
   для: 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 руб"?

  Ответить  
 
 автор: Dinya_1   (17.06.2012 в 17:22)   письмо автору
 
   для: confirm   (17.06.2012 в 17:11)
 

Ой, все получилось. Там для цикла for просто нужно было добавить фигурные скобки.

confirm - Спасибо большое за ваше желание мне помочь!

  Ответить  
 
 автор: confirm   (17.06.2012 в 17:27)   письмо автору
 
   для: 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)).' руб.';

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования