Есть 40 отделов, каждый отдел вносит свою информацию в таблицу (всего полей 22 и только цифры). Админ. У него появляется сводная таблица всех отделов с суммированием по столбцам Наименование Данные 1 Данные … Данные 22 Отдел 1 | 10 | 20 | 80 Отдел 2 | 30 | 40 |40 Отдел …. | 50 | 30 |50 Отдел 33 | 10 | 40 |20 Всего | 100 | 130 |190 Отдел 34 | 10 | 10 |20 Отдел …. | 20 | 20 |10 Отдел 40 | 20 | 20 |30 Всего | 50 | 50 |60 Итого | 150 | 180 |250 В таблице данные не добавляются, а только обновляются. Суммирование данных. Судя по таблице, данные делятся на 2 группы, с выводом суммы в каждой группе (Всего), а потом эти группы суммируются (Итого). Делать 2 таблицы и их связывать, в той же таблице сделать еще 22 поля и делать выборку. Какие варианты есть?
Варианты чего? Ты хочешь сделать страничку, которая выглядит и работает как лист Excel? См. js-компонент handsontable. https://docs.handsontable.com/pro/1.0.0-beta3/demo-summary- ... tions.html Добавлено спустя 1 минуту 57 секунд: Если речь суммировании в БД, гугли агрегатную функцию SUM()
зачем я буду гуглить, я же и так на форуме, вот здесь http://ags.vrnzags.ru/allprint.php выходная форма журнала. Мне нужно отделы разбить на группы. 1-ая группа = сумма1, 2-ая группа=сумма2, потом сумма1+сумма2=Итог.
да ты мудрец! ))) переношу тему в подходящий раздел Добавлено спустя 3 минуты 14 секунд: так, то у тебя уже есть ответ: сумма по столбцу - функция sum() попробуй объяснить нормально что ты имеешь и что хочешь.
Спасибо! прежде чем писать на форуме я пролазил кучу сайтов. Код (PHP): //сумма по полям $result = mysql_query("select SUM(tab1) AS t1, SUM(tab2) AS t2, и т.д. from " . $table) or die(mysql_error()); Код (PHP): //Здесь выводим сумму по столбцам while($sm = mysql_fetch_array($result)){ echo '<tr>'; echo '<th>Итого: </th>'; echo '<th>' . $sm['t1'] . '</th>'; echo '<th>' . $sm['t2'] . '</th>'; и т.д. Мне нужно разбить в таблице по группам, 33 отдела в одну группу, 7 в другую, по каждой группе свой результат, а потом общая сумма. см таблицу выше, там цветом выделил (1-ая группа = Всего1, 2-ая группа=Всего2, потом Всего1+Всего2=Итог.) Добавлено спустя 59 минут 1 секунду: Есть 40 отделов (строки). Для каждого отдела 22 параметра (столбцы). Отделы разделены на две группы – в одной группе 33 отдела, в другой 7. Необходимо просуммировать данные всех отделов по каждому из параметров в каждой группе. Затем просуммировать результаты в каждой из групп. Результат вывести в таблицу. Подсказка от модератора: Любой код или текст конфигурации пишите между тегом [code=php] и [/code]. Используйте отступы в коде для форматирования текста. Это помогает быстрее понять вас, увеличивает шанс на получение ответа. Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, любая другая разметка, результаты array/object dump и т. д.
В таблицу добавил дополнительное поле, например «gruppa» (INT) Разнес отделы по группам, т.е. просто проставил код 0 и 1. Весь код не мой, нашел на просторах. Остальное дописал сам. Код (PHP): <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <link rel="stylesheet" href="style.css" type="text/css"> <title>Отчет по АГС ЗАГС</title> </head> <body> <center><h3>Государственная регистрация АГС ___ квартал 2016 год.</h3></center> <?php // определяем начальные данные $db_host = 'localhost'; $db_name = 'база'; $db_username = 'имя'; $db_password = 'пароль'; $table = 'таблица'; // соединяемся с сервером базы данных $connect_to_db = mysql_connect($db_host, $db_username, $db_password) or die("Обрыв провода, возможно мыши: " . mysql_error()); // подключаемся к базе данных mysql_select_db($db_name, $connect_to_db) or die("Нет подключения к базе, опять мыши?: " . mysql_error()); mysql_set_charset( 'utf8' ); // выбираем значения по группе «0» $qr_result = mysql_query("select * from " . $table ." WHERE gruppa='0'") or die(mysql_error()); // выбираем значения города из таблицы по группе «1» $vrn_result = mysql_query("select * from " . $table ." WHERE gruppa='1'") or die(mysql_error()); //сумма по полям область Всего: $sm_obl_result = mysql_query("select gruppa, SUM(tab1) AS t1, SUM(tab2) AS t2, и т.д. from " . $table . " WHERE gruppa = 0") or die(mysql_error()); //сумма по полям город - Всего: $sm_city_result = mysql_query("select gruppa, SUM(tab1) AS tc1, SUM(tab2) AS tc2, и т.д. from " . $table . " WHERE gruppa = 1") or die(mysql_error()); //сумма по всем полям - итоговая Итого: $sm_all_result = mysql_query("select SUM(tab1) AS ts1, SUM(tab2) AS ts2, и т.д. from " . $table) or die(mysql_error()); // выводим на страницу сайта заголовки HTML-таблицы echo '<table>'; echo '<tr>'; echo '<td>наименование</td>'; echo '<td>Поля таблицы </td>'; echo '<td>Поля таблицы </td>'; echo '</tr>'; // выводим в HTML-таблицу все данные отделов из таблицы MySQL группы «0» while($data = mysql_fetch_array($qr_result)){ echo '<tr>'; echo '<td>' . $data['otdel'] . '</td>'; echo '<td>' . $data['tab1'] . '</td>'; echo '<td>' . $data['tab2'] . '</td>'; echo '</tr>'; } //Подвал отчета области. Здесь выводим сумму по столбцам по области группа «0» Всего: while($sm = mysql_fetch_array($sm_obl_result)){ echo '<tr>'; echo '<th>Всего: </th>'; echo '<th>' . $sm['t1'] . '</th>'; echo '<th>' . $sm['t2'] . '</th>'; echo '</tr>'; } // выводим в HTML-таблицу все данные города клиентов из таблицы MySQL группа «1» while($data = mysql_fetch_array($vrn_result)){ echo '<tr>'; echo '<td>' . $data['otdel'] . '</td>'; echo '<td>' . $data['tab1'] . '</td>'; echo '<td>' . $data['tab2'] . '</td>'; echo '</tr>'; } /Подвал отчета города. Здесь выводим сумму по столбцам Всего: группа «1» while($sm = mysql_fetch_array($sm_city_result)){ echo '<tr>'; echo '<th>Всего: </th>'; echo '<th>' . $sm['tc1'] . '</th>'; echo '<th>' . $sm['tc2'] . '</th>'; echo '</tr>'; } //Подвал всего отчета. Здесь выводим сумму по всем столбцам ИТОГО: while($sm = mysql_fetch_array($sm_all_result)){ echo '<tr>'; echo '<th>Итого: </th>'; echo '<th>' . $sm['ts1'] . '</th>'; echo '<th>' . $sm['ts2'] . '</th>'; echo '</tr>'; } echo '</tbody>'; echo '</table>'; // закрываем соединение с сервером базы данных mysql_close($connect_to_db); ?> <code lang="php"> <p> <input type="button" onclick="this.style='display: none'; print();" value="Распечатать"/></p> //Когда будем печатать, убираем кнопку, она на бумаге не нужна </body> </html>
ну... эти пять запросов можно заменить на два и второй с группировкой. или если все равно пых рендерит то эти же пять запросов можно вообще не делать - дернуть таблицу одним запросом эз-из и в пыхе считать групповую статистику. при изменении группы - вывести подытог. по окончанию итерирования результата - просуммировать подытоги показав итог. в любом случае опубликованное решение действительно
А ты тут каким боком вылез вообще? Или ты и в правду решил, что я сейчас все переписывать начну и думать за автора. Ты ошибся. Хотя совет Ganzal'a, поможет решить эту задачу в разы качественнее и интереснее. Да и логика будет, а не как сейчас, индустрия. И да! Когда у меня есть желание переписывать за кого-то, я это делаю, когда его нет, я не делаю, логично!