Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как суммировать значение массива foreach?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
zapatronen
Отправлено: 12 Января, 2016 - 18:20:27
Post Id



Гость


Покинул форум
Сообщений всего: 103
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1. $basket=unserialize(base64_decode($row['basket']));
  2.     foreach($basket as $tovar=>$value){
  3.         $query="SELECT * FROM beta WHERE article='".$tovar."'  ";
  4.         $data = mysqli_query($dbc, $query);
  5.         $row = mysqli_fetch_array($data);


Выводит список покупаемых товаров клиента

Но как сделать так чтобы повторяющийся ключ слился в один, а значения суммировались?

Например
Исходная:

ARduino uno 1
ARduino uno 3
ARduino uno 5
плата расширегия 2
джамперы 3
джамперы 4

Нужно чтобы получилось так:
ARduino uno 9
плата расширегия 2
джамперы 7


Делаю это, чтобы подсчитать сколько определенного товара продалось за месяц

Подскажите хоть что читать
С уважением, Павел
 
 Top
google_funny
Отправлено: 12 Января, 2016 - 22:39:25
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Дек. 2015  


Помог: 0 раз(а)




zapatronen

Выложите дамп (содержимое) хотя-бы нескольких строк из вашей таблицы beta, к которой вы обращаетесь, и обязательно, включите в дамп - название колонок!
Просто хочется понять какие у вас там колонки и какое содержимое строк этой таблицы.

Вообще, если по-человечески, то каждое наименование вашего товара должно выводится в виде массива, в котором будет содержатся кол-во продаж для нужного вам промежутка времени.. вот потом, мы сможем просто сложить кол-во для каждого наименования..

вот примерно такой должен быть результат обращения к базе данных..
PHP:
скопировать код в буфер обмена
  1.  
  2. [0] => array (
  3.    ['товар1'] => array(
  4.        [0]=>2,
  5.        [1]=>3,
  6.        [2]=>6,
  7.        [3]=>5
  8.    ),
  9.    ['товар2'] => array(
  10.       [0]=>3,
  11.       [1]=>34,
  12.       [2]=>4
  13.    ),
  14.   ['товар678'] => array(
  15.       [0]=>345,
  16.       [1]=>21,
  17.       [2]=>89,
  18.       [3]=>89
  19.    )  
  20. )
  21.  


а так более кнкретно нужно смотреть, как там все организовано..
 
 Top
DelphinPRO
Отправлено: 13 Января, 2016 - 10:12:19
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




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


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
zapatronen
Отправлено: 13 Января, 2016 - 16:33:33
Post Id



Гость


Покинул форум
Сообщений всего: 103
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




Вот как подсказали, работает
<?
$query="SELECT basket FROM orders WHERE date_format(times, '%Y%m') = date_format(date_add(now(), interval -1 month), '%Y%m') ";
$result=mysqli_query($dbc, $query) or die("dddd");
$prods = array();
while($row=mysqli_fetch_array($result)){
$basket=unserialize(base64_decode($row['basket']));
foreach($basket as $tovar=>$value){
if (!isset($prods[$tovar])) {
$prods[$tovar] = $value;
} else {
$prods[$tovar] += $value;
}


$query="SELECT * FROM beta WHERE article='".$tovar."' ORDER BY name ";
$data = mysqli_query($dbc, $query);
$row = mysqli_fetch_array($data);
//...
}
}
print_r($prods);
 
 Top
dcc0
Отправлено: 13 Января, 2016 - 17:28:01
Post Id


Участник


Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014  


Помог: 10 раз(а)




Из учебника здесь на сайте:
PHP:
скопировать код в буфер обмена
  1. Следующие операторы выведут, соответственно, колличество записей в таблице CLIENTS, самый дорогой товар и сумму цен всех товаров:
  2.  
  3. SELECT COUNT(*)
  4.  FROM CLIENTS;
  5.  
  6. SELECT MAX(PRICE)
  7.  FROM TOOLS;
  8.  
  9. SELECT SUM(PRICE)
  10.  FROM TOOLS;

По адресу
http://www.php.su/mysql/?commands
Только для Вас, эксклюзивно.


-----
Март 2021. Бросил программирование
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB