Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 21.02.2015
Сообщений: 2
MySQL

Как лучше вывести большую таблицу со множеством группировок?

21.02.2015, 15:39. Показов 1152. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Много перерыл информации, но так и не нашел каким способом лучше всего выводить большую таблицу.
Задача - Есть 4 таблицы объединяемыми джоинами, которые я выгружаю в массив.
Суть в том, что есть объект 1 уровня (около 9 штук) к каждому из которых привязано по несколько объектов 2 уровня, к которым соответственно привязаны объекты 3 уровня, к которым привязаны непосредственно данные с разбивкой по дням. Везде связи один ко многим.
Необходимо вывести таблицу за определенные периоды(с выборкой проблем нет, выгружаю из базы то, что надо). Должно получится что-то вроде того, как на скриншоте. Основное, это группировки и объединения строк и столбцов. С объединением отдельные проблемы, так как для подсчета строк приходится множество дополнительных инкремент переменных, в которых достаточно сложно ориентироваться.
Сделано все на modx revo. Не могу определиться даже как лучше всего организовать массив. Придумал 2 варианта.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$i = 0;
 
foreach ($objects as $object) {
    $object_data[$i]['m_name'] = $object->get('m_name');
    $object_data[$i]['obj_name'] = $object->get('obj_name');
    $object_data[$i]['obj_type_name'] = $object->get('obj_type_name');
    $object_data[$i]['org_name'] = $object->get('org_name');
    $object_data[$i]['work_name'] = $object->get('work_name');
    $object_data[$i]['dt_obj_name'] = $object->get('dt_obj_name');
    $object_data[$i]['date'] = $object->get('date');
    $object_data[$i]['fact_income'] = $object->get('fact_income');
    $object_data[$i]['fact_expense'] = $object->get('fact_expense');
    $object_data[$i]['fact_inner_income'] = $object->get('fact_inner_income');
    $object_data[$i]['fact_inner_expense'] = $object->get('fact_inner_expense');
    $object_data[$i]['fact_residue'] = $object->get('fact_residue');
    $i++;
}
или

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
foreach ($objects as $object) {
    $object_data[$object->get('id_m')]['m_name'] = $object->get('m_name');
    $object_data[$object->get('id_m')][$object->get('id_obj')]['obj_name'] = $object->get('obj_name');
    $object_data[$object->get('id_m')][$object->get('id_obj')]['obj_type_name'] = $object->get('obj_type_name');
    $object_data[$object->get('id_m')][$object->get('id_obj')][$object->get('id_dt_obj')]['org_name'] = $object->get('org_name');
    $object_data[$object->get('id_m')][$object->get('id_obj')][$object->get('id_dt_obj')]['work_name'] = $object->get('work_name');
    $object_data[$object->get('id_m')][$object->get('id_obj')][$object->get('id_dt_obj')]['dt_obj_name'] = $object->get('dt_obj_name');
    $object_data[$object->get('id_m')][$object->get('id_obj')][$object->get('id_dt_obj')][$object->get('id_dt_data')]['date'] = $object->get('date');
    $object_data[$object->get('id_m')][$object->get('id_obj')][$object->get('id_dt_obj')][$object->get('id_dt_data')]['fact_income'] = $object->get('fact_income');
    $object_data[$object->get('id_m')][$object->get('id_obj')][$object->get('id_dt_obj')][$object->get('id_dt_data')]['fact_expense'] = $object->get('fact_expense');
    $object_data[$object->get('id_m')][$object->get('id_obj')][$object->get('id_dt_obj')][$object->get('id_dt_data')]['fact_inner_income'] = $object->get('fact_inner_income');
    $object_data[$object->get('id_m')][$object->get('id_obj')][$object->get('id_dt_obj')][$object->get('id_dt_data')]['fact_inner_expense'] = $object->get('fact_inner_expense');
    $object_data[$object->get('id_m')][$object->get('id_obj')][$object->get('id_dt_obj')][$object->get('id_dt_data')]['fact_residue'] = $object->get('fact_residue');
}
2 Вариант, вроде как удобнее в плане вывода внутренних foreach, но там берется и параметр например ['obj_name'] при переборке уровня [$object->get('id_obj')], который я не могу исключить из выборки.

Я не прошу готового решения, прошу подсказать именно методику для решения такого рода задачи. Может есть какие либо готовые библиотеки? Может Jquery подпрячь? Может проще сразу делать генерацию Excel файла(реализовываться в любом случае будет, но возможно позже?

Заранее буду очень благодарен.
Миниатюры
Как лучше вывести большую таблицу со множеством группировок?  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.02.2015, 15:39
Ответы с готовыми решениями:

Как лучше реализовать большую таблицу? Массивом или по другому?
Здравствуйте, подскажите как правильно сделать вот такую таблицу? передавать 60 переменных в обработчик или как то можно массивом, если...

Как правильно вывести на распечатку созданную большую таблицу в эксель формата А2
Набрал большую таблицу, но чтобы вывести на печать в формате А4 потребуется около четырнадцати листов, на каждом листе нужно отпечатать...

Как лучше организовать интерфейс с множеством окон?
Здравствуйте! Хочу написать приложение которое будет работать с несколькими железками через последовательный порт. В зависимости от...

1
33 / 34 / 13
Регистрация: 06.04.2012
Сообщений: 264
21.02.2015, 19:38
Я не спец абсолютно, случайно зашел, но почему бы такое огромное количество полей не разбить примерно по типу и не сериалайзить в одно поле БД? А потом на странице 1 запрос к нужной ячейке, unserialize и все, готовый массив с циферками.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.02.2015, 19:38
Помогаю со студенческими работами здесь

Как лучше сделать большую базу данных?
Уважаемые знатоки, подскажите, пожалуйста, как лучше сделать большую базу данных. Уже несколько дней сижу и перечитываю все возможные...

Как сохранить большую таблицу в pdf?
Добрый день. Делаю расписание универское. Таблица большая. Хочу сделать ее в pdf. Таблица готова, однако, после сохранения в pdf, она...

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

Как вместить большую таблицу в Div
День добрый. Помогите решить трабл. Проблема в том что в дифе .centr находиться таблица в которую выгружаются данный с Mysql. Из-за...

Как лучше хранить большую корзину (больше 140-170 товаров)?
Сейчас храню корзину в куках (id-товара и количество). Но при количестве товаров больше 140-170 они начинают пропадать из корзины (из-за...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru