Автор Тема: Проблемка с array_sum  (Прочитано 3950 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн temur

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 15
  • +0/-0
  • 0
    • Просмотр профиля
    • http://capshop.ru
Проблемка с array_sum
« : 13 Июля 2002, 16:02:08 »
Вот часть скрипта:
$query_cr_buy = "select quantity from cap_buy where cap = \'$cap\'";
$query_cr_sell = "select quantity from cap_sell where cap = \'$cap\'";

$to_sell_result = mysql_query($query_cr_sell, $link);
$to_buy_result = mysql_query($query_cr_buy, $link);

$to_buy_array = mysql_fetch_array($to_buy_result);
$to_sell_array = mysql_fetch_array($to_sell_result);

$to_buy = array_sum($to_buy_array);
$to_sell = array_sum($to_sell_array);

Может быть здесь можно и покороче написать, но так получилось :). В конце работы скрипта выводятся $to_buy и $to_sell, которые должны показывать сумму всех элементов возврашенного массива. Но почему-то выдается число, которое в два раза больше первого поля в MySQL :) Почему так происходит?

Оффлайн GotZfild

  • Универсал
  • Старожил
  • ****
  • Сообщений: 456
  • +0/-0
  • 2
    • Просмотр профиля
    • http://myphp.dem.ru
Проблемка с array_sum
« Ответ #1 : 13 Июля 2002, 16:55:40 »
Дело в том, что mysql_fetch_array возвращает две копии массива: ассоциативный и обычный, нумированный. Тебе нужно

$array 
mysql_fetch_row($to_buy_result);
После трех дней без программирования жизнь становится бессмысленной.

Оффлайн GotZfild

  • Универсал
  • Старожил
  • ****
  • Сообщений: 456
  • +0/-0
  • 2
    • Просмотр профиля
    • http://myphp.dem.ru
Проблемка с array_sum
« Ответ #2 : 13 Июля 2002, 16:57:49 »
А можешь методом Емели: дели все на два :-)
После трех дней без программирования жизнь становится бессмысленной.

Оффлайн temur

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 15
  • +0/-0
  • 0
    • Просмотр профиля
    • http://capshop.ru
Проблемка с array_sum
« Ответ #3 : 13 Июля 2002, 17:15:18 »
Сумма в два раза больше не всей суммы, а только одного из полей MySQL :) Как с этим бороться?

Оффлайн GotZfild

  • Универсал
  • Старожил
  • ****
  • Сообщений: 456
  • +0/-0
  • 2
    • Просмотр профиля
    • http://myphp.dem.ru
Проблемка с array_sum
« Ответ #4 : 13 Июля 2002, 18:13:06 »
Я вообще плохо представляю себе, как именно ты считаешь сумму. По приведенному тобой примеру, у тебя сумма есть просто значение одного поля, умноженного на два (в силу причин, о которых я писал выше), так как mysql_fetch_array возвращает массив из данных только одной записи, а не всех выбранных в целом. Значит тебе в любом случае нужно использовать цикл.
Другое дело, что ты можешь сделать все это в запросе MySQL

$query 
"SELECT SUM(b.quantity), SUM(s.quantity) from cap_buy b, cap_sell s where b.cap = \'$cap\' OR s.cap = \'$cap\'"
После трех дней без программирования жизнь становится бессмысленной.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Проблемка с array_sum
« Ответ #5 : 13 Июля 2002, 20:58:39 »
А можно и так.

$query_cr_buy = "select quantity from cap_buy where cap = \'$cap\'";
$query_cr_sell = "select quantity from cap_sell where cap = \'$cap\'";

$to_sell_result = mysql_query($query_cr_sell, $link);
$to_buy_result = mysql_query($query_cr_buy, $link);

$to_buy_array = mysql_fetch_array($to_buy_result);
$to_sell_array = mysql_fetch_array($to_sell_result);

$to_buy = $to_buy_array[\'quantity\'];
$to_sell = $to_sell_array[\'quantity\'];

В любом случае, непонятно, зачем тебе суммировать массив из одного элемента.-

Оффлайн temur

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 15
  • +0/-0
  • 0
    • Просмотр профиля
    • http://capshop.ru
Проблемка с array_sum
« Ответ #6 : 13 Июля 2002, 21:37:44 »
Может я чего не понимаю, простите, глупый я :)
Задам вопрос по другому.  Я с помощью select получаю доступ к полям базы, где хранятся цифры разные. Как мне получить сумму этих чисел?

Оффлайн Stek

  • Обожатель PHP
  • Ветеран
  • *****
  • Сообщений: 532
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.phpdevs.com
Проблемка с array_sum
« Ответ #7 : 13 Июля 2002, 21:44:41 »
SELECT SUM(imja_polja) FROM tablica
PHP без башни - сделай свою жизнь разнообразнее.
Разбираю скрипты, собираю заново, вытираю пыль с баз данных.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Проблемка с array_sum
« Ответ #8 : 13 Июля 2002, 21:49:47 »
Как тебе написал ГотЗфрид.

$query_cr_buy = "select SUM(quantity) as sum_q from cap_buy where cap = \'$cap\'";
$to_buy_result = mysql_query($query_cr_buy, $link);
$to_buy_array = mysql_fetch_array($to_buy_result);
$to_buy = $to_buy_array[\'sum_q\'];

а то, что ты не понимаешь - это что mysql_fetch_array возвращает тебе только одну запись. значение quantity только из одной стоки базы.
то есть, если делать, как ты хотел, то надо не один раз вызывать mysql_fetch_array, а в цикле порулчать quantity и суммировать.

Оффлайн temur

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 15
  • +0/-0
  • 0
    • Просмотр профиля
    • http://capshop.ru
Проблемка с array_sum
« Ответ #9 : 14 Июля 2002, 14:41:10 »
Все, всем спасибо!

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28