Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 26.06.2011, 19:57   #1
Dmitry1983
Пользователь
 
Регистрация: 24.06.2011
Сообщений: 80
По умолчанию Математика в php

вопрос традиционно элементарный...
с помощью формы и функций выводится перечень объектов (из БД) удовлетворяющих заданным значениям (например, больше 5 и менее 10)
Как программно вывести количество значений?

$result = mysql_query("SELECT a.uid, a.gid,a.url, a.popul, b.name_rus FROM (geo_data AS a INNER JOIN geo_base as b ON a.gid=b.uid) WHERE a.popul>$ot and a.popul<$do ORDER BY a.popul" );

$summ= count($result);
echo $summ;

так не катит и вообще про математику в php не могу найти как делать округление результата и т.д.?
Dmitry1983 вне форума Ответить с цитированием
Старый 26.06.2011, 20:27   #2
Cronos20
Форумчанин
 
Регистрация: 08.07.2010
Сообщений: 679
По умолчанию

А в чем собственно вопрос??? Вы что считать-то хотите?
То что вы пытаетесь делать, судя по всему - подсчет количества рядов при выборке ... это делает mysql_num_rows($result)
Или вы хотите там что-то подсчитать в sql запросе? тогда зачем использовать php (вы говорите о каком-то округлении)? Считайте прямо в sql запросе
Cronos20 вне форума Ответить с цитированием
Старый 27.06.2011, 00:12   #3
Dmitry1983
Пользователь
 
Регистрация: 24.06.2011
Сообщений: 80
По умолчанию

за подсказку спасибо! шас опробуем... а считать?
ну вот например у меня строится выборка
а - 1
б - 2
в - 2
г - 4
д- 1
ж- 1

мне нужно сверху добавить в таблицу строку, в которой поставить суммы:

Всего значений: 6 Сумма: 11 (как посчитать сумму?) array_sum - это оно?

Последний раз редактировалось Dmitry1983; 27.06.2011 в 00:15.
Dmitry1983 вне форума Ответить с цитированием
Старый 27.06.2011, 11:45   #4
Cronos20
Форумчанин
 
Регистрация: 08.07.2010
Сообщений: 679
По умолчанию

О чем вы спрашиваете??? Вы не ответили на вопрос ... я понятия не имею что вы там собираетесь считать ... что такое а,б,в .... количество рядов из 6-ти запросов с селектом? Ну посчитает это array_sum, но фраза
Код:
мне нужно сверху добавить в таблицу строку, в которой поставить суммы:
лишена смысла ... не знаю что вы хотите ....
Если что-то хотите выбрать из таблицы, посчитать, а потом обратно вставить туда же, то ваш способ как минимум не оптимален .... все можно делать одним сложным sql запросом типа INSERT into table (field) SELECT .... from table WHERE ....
Хотя смысл всех ваших вычислений мне совсем не понятен
Cronos20 вне форума Ответить с цитированием
Старый 27.06.2011, 12:46   #5
graymaster
Форумчанин
 
Аватар для graymaster
 
Регистрация: 03.05.2011
Сообщений: 158
По умолчанию

Вы можете сделать ещё один запрос в mysql, можете посчитать это в php

MySQL: вам помогут SUM() и COUNT()

php: когда вы в цикле выводите (а я надеюсь вы в цикле выводите) значения из DB, просто добавьте
до цикла
$count=0;
$sum=0;
в цикле
$count++;
$sum+=Суммируемая Переменная
После цикла
выведите значения $count и $sum.

PS: И начинайте же учить простейшие концепции и алгоритмы программирования ! "Программист" без знания основ - как минимум жалок и беспомощен, максимум - изобретает велосипеды и пишет индусский код. (Ладно бы ещё индийский код писали, так нет - пишут индусский.)
graymaster вне форума Ответить с цитированием
Старый 11.07.2011, 19:48   #6
Dmitry1983
Пользователь
 
Регистрация: 24.06.2011
Сообщений: 80
По умолчанию

Прошу прощения, был в отпуске...
буду признателен за помощь в оптимизации кода...
Суть в следующем - есть перечень объектов и численность персонала у каждого.

Необходимо вывести в таблицу перечень объектов удовлетворяющих обозначенным в форме критериям (от 10 до 20 чел.)
Проблема: каждую строку рисует отдельной таблицей (я понимаю, что ее в цикл загнал, но запутался)

PHP код:
<body>

<div align="center">
<form name="objectvybor" method="post" action="">
  <p> Выберите объекты по численности персонала </p>
  
  <p> от <input name="ot" type="text" id="search"> 
  до  <input name="do" type="text" id="search"> </p>
  <input name="Submit" type="submit" value="Показать">
</form>

<?php

$ot 
$_POST['ot'];
$do $_POST['do'];

if (
$ot=='')
{
    echo 
"";
}
else
{
echo 
"Перечень объектов с численностью персонала от ".$ot" чел. до ".$do." чел. <br>";

$result mysql_query("SELECT a.uid, a.gid,a.url, a.popul, b.name_rus FROM (data AS a INNER JOIN base as b ON a.gid=b.uid) WHERE  a.popul>$ot and a.popul<$do ORDER BY a.popul" );

$daa mysql_fetch_array$result); 

if    (
$daa=='') {
    echo 
"<br>Таких объектов нет";
}
else
{
    do {

printf ("<table align='center' border='1'>
<tr height='10px'>
<td width='100'><p align='center'>%s</p></td>
<td width='300'><p align='center'>%s</p></td>
<td width='100'><p align='center'>%s</p></td>
</tr>
</table>"
$daa[0], $daa[4], $daa[3]);


}
while (
$daa mysql_fetch_array$result));
}
}
?>
Проблема 2: нужно над таблицей вывести:
Всего таких объектов: и тут нужна функция суммы или счета (count)?
Всего персонала: сумма персонала в этих объектах.

Заранее спасибо!
Dmitry1983 вне форума Ответить с цитированием
Старый 11.07.2011, 21:33   #7
graymaster
Форумчанин
 
Аватар для graymaster
 
Регистрация: 03.05.2011
Сообщений: 158
По умолчанию

Проще всего сделать ещё один запрос такого вида
SELECT COUNT(a.uid), SUM(A.POPUL) FROM data AS a WHERE a.popul>$ot and a.popul<$do
(Запрос такой же, как и у вас, только я выбросил оттуда ненужные в этом случае иннэр джоин и ордер)
Т.е. надо вытащить каунт и сум (каунт, соответственно - количество таких объектов, сум - сумма персонала), и вывести результаты, а потом делать запрос на остальные данные и выводить их.


Для вывода таблицы надо его (вывод таблицы, открывающий и закрывающий таги) вытащить из цикла:
Т.е. вот в этом иф-е сделать вот так
PHP код:
if    ($daa=='') { 
    echo 
"<br>Таких объектов нет"

else 

echo 
"<table align='center' border='1'>";
    do { 
printf ("<tr height='10px'> 
<td width='100'><p align='center'>%s</p></td> 
<td width='300'><p align='center'>%s</p></td> 
<td width='100'><p align='center'>%s</p></td> 
</tr> 
"
$daa[0], $daa[4], $daa[3]); 

while (
$daa mysql_fetch_array$result));
echo 
"</table>"



Последний раз редактировалось graymaster; 11.07.2011 в 21:38.
graymaster вне форума Ответить с цитированием
Старый 11.07.2011, 22:13   #8
Dmitry1983
Пользователь
 
Регистрация: 24.06.2011
Сообщений: 80
По умолчанию

Большущее!!!!
Dmitry1983 вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Математика (Си) linker_mari Помощь студентам 2 07.11.2010 19:33
Математика zmey31313 Помощь студентам 1 07.06.2010 15:10
математика(( lumentek Общие вопросы C/C++ 3 07.06.2010 00:24
Математика terminadoor Помощь студентам 3 22.09.2008 21:42
Математика doniyor Общие вопросы Delphi 2 15.05.2008 18:25


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS