|
Особый статус
623 / 221 / 164
Регистрация: 18.11.2015
Сообщений: 1,086
|
||||||
Динамическая иерархическая таблица из БД07.11.2017, 18:23. Показов 2129. Ответов 18
Метки нет (Все метки)
Здравствуйте! Такая проблема, нужно создать иерархическую таблицу html(Прикрепленное изображение(Итоговая) 1), формируя ее из данных в Базе, для этого была создана таблица-шаблон(Прикрепленное изображение 2(Структура) верхняя) и таблица-данные(Прикрепленное изображение 2(Структура) нижняя). В таблице-шаблоне описывается как должна выглядеть таблица, ее иерархию и порядок следования столбцов, а в таблице-данные данные для "вписывания" в итоговую таблицу, коротко говоря первая таблица формулирует лишь "сложную шапку", т.е иерархию, а данные приписываются под ними. В общем в этом и заключается проблема, я пробовал с помощью PHP, но как-то коряво там получается и без вложенных тэгов table не получилось... Возможно ли как-то реализовать такое на JS(jQuery)?
Если да, то подскажите, пожалуйста, куда копать и какие методы использовать, подозреваю нужно использовать селекторы, что-то типа:
![]() Не спрашивайте зачем это, я сам не знаю Сказали сделать "такое".Буду благодарен за любые идеи, особенно тем, что облегчит мои муки, кажись задача не простая
0
|
||||||
| 07.11.2017, 18:23 | |
|
Ответы с готовыми решениями:
18
Иерархическая таблица с товарами
|
|
890 / 725 / 447
Регистрация: 13.07.2015
Сообщений: 2,277
|
|
| 07.11.2017, 23:36 | |
|
какая база-то? mysql? можешь скинуть тестовые таблицы? так тебе надо просто посчитать уровень на котором находится элемент (строку в первой, второй или третьей, а именно сколько у него родителей на уровнях выше 0 1 или 2) и посчитать количество всех его потомков (до самаго низа иерархии) у которых нет потомков (конечные точки дерева) это и будет число роуспан
0
|
|
|
890 / 725 / 447
Регистрация: 13.07.2015
Сообщений: 2,277
|
|
| 07.11.2017, 23:44 | |
|
можно и на пхп перечесать массив рекурсией и перестроить в готовый с указанием в какой строке и какой ширины элемент
0
|
|
|
890 / 725 / 447
Регистрация: 13.07.2015
Сообщений: 2,277
|
|
| 07.11.2017, 23:44 | |
|
мож завтра напишу реализацию, если ты сам раньше не напишешь, а пока спать иду
0
|
|
|
Особый статус
623 / 221 / 164
Регистрация: 18.11.2015
Сообщений: 1,086
|
|||||||||||||||||||||
| 08.11.2017, 09:49 [ТС] | |||||||||||||||||||||
|
Кликните здесь для просмотра всего текста
![]() Класс создания таблицы:
Но писалось на скоростях, а рефракторить не вижу смысла не на продакшн)тут не влезли массивы, сообщением ниже посмотреть В итоге выходит нечто ужасное (См. Прикрепленное изображение), там в table вложены table Прикрепляю так же все приложение в архиве, на комментарии не обращайте внимание, делал для друга, который ничего не смыслит ни PHP ни в программировании, хотя по качеству кода видимо и я(( В архиве с приложением в config.php нужно вписать параметры для подключения к БД
0
|
|||||||||||||||||||||
|
Особый статус
623 / 221 / 164
Регистрация: 18.11.2015
Сообщений: 1,086
|
|||||||||||
| 08.11.2017, 09:55 [ТС] | |||||||||||
|
Идея в том, что я получаю из набора данных:
Кликните здесь для просмотра всего текста
сортированный вложенный массив с child-parent: Кликните здесь для просмотра всего текста
Добавлено через 6 минут А вторая таблица с данным value_table пока лишь мои догадки как связать данные и шапку... Мб есть идеи получше
0
|
|||||||||||
|
890 / 725 / 447
Регистрация: 13.07.2015
Сообщений: 2,277
|
||||||
| 08.11.2017, 11:22 | ||||||
а у тебя уже куча таких таблиц и выхода нет придумать другой формат хранения шапки? потому что если нет, то лучше придумать другую реализацию, то что выбрал ты неудачно, и очень заморочено. я бы использовал иерархию в виде материальных путей, легко считать предков и потомков и сразу отсортировать ячейки в нужном порядке, останется только вколхозить пустые синие клетки. плюс у тебя если по ошибке задать допустим две записи 0 1 и 1 0, получится ячейки указывают друг на друга и программа построения впадет в бесконечный цикл Добавлено через 3 минуты архив твой не открывается и спойлеры тоже (наверное много ты туда текста впихнул) перезалей куда нить на яндекс например
0
|
||||||
|
Особый статус
623 / 221 / 164
Регистрация: 18.11.2015
Сообщений: 1,086
|
||||||||||||
| 08.11.2017, 11:29 [ТС] | ||||||||||||
![]() Добавлено через 1 минуту Там же можно посмотреть и массивы, в каком виде и т.д
0
|
||||||||||||
|
890 / 725 / 447
Регистрация: 13.07.2015
Сообщений: 2,277
|
|||||||||||
| 08.11.2017, 11:45 | |||||||||||
|
спойлеры открылись, но лучше ты мне данные выведи функцией
Добавлено через 2 минуты материальные пути это ты указываешь в поле ключ просто строкой номера
Добавлено через 1 минуту архив пишет поврежден, ни Winrar ни 7-zip у меня его не открывает. лучше в зип запакуй. и в итоге остался вопрос есть ли возможность сменить формат хранения или таблиц уже миллион готовых в базе?
0
|
|||||||||||
|
890 / 725 / 447
Регистрация: 13.07.2015
Сообщений: 2,277
|
||||||
| 08.11.2017, 13:10 | ||||||
|
Все. задача с шапкой решена. Если взять данные в нужном порядке и тянуть ячейки вниз, а не заполнять слева то выходит нормально
0
|
||||||
|
890 / 725 / 447
Регистрация: 13.07.2015
Сообщений: 2,277
|
|
| 08.11.2017, 13:11 | |
|
можно попробовать алгоритм на твоей шапки, ток выложи в json_encode и я подправлю свой скрипт
0
|
|
|
Особый статус
623 / 221 / 164
Регистрация: 18.11.2015
Сообщений: 1,086
|
||||||||||||||||||||
| 08.11.2017, 17:02 [ТС] | ||||||||||||||||||||
А как вы предлагаете связывать данные? Вышло у вас отлично! Не по теме:
Добавлено через 2 минуты Вот еще раз, на всякий дамп базы:
Хотел бы внести ясность: `id` - понятно, ключ `internal_key` - внутренний ключ parent_id `sort_order` - сортировка на каждом уровне иерархии `status` - статус, физическое поле или условное (необязательный) `field_name` - имя поля(необязательный) `name` - наименование на кириллице `field_type` - тип поля (необязательный) `lenght` - длина поля (необязательный) все что необязательно - это делалось чтобы запросом(CREATE TABLE) из такого шаблона создавать таблицы в БД, для другого дела, а может и можно, сначала создать таблицу а заполненные данные уже как раз "вписывать" под шапкой, синяя область на картинке. Все это реализовано в приложении в архиве, кроме сложной шапки и данных под ними( Добавлено через 4 минуты Мой косяк, вот новая ссылка: https://yadi.sk/d/E6lLg_Yi3PWwL4
0
|
||||||||||||||||||||
|
890 / 725 / 447
Регистрация: 13.07.2015
Сообщений: 2,277
|
||||||
| 08.11.2017, 17:53 | ||||||
Добавлено через 2 минуты и на счет слова "динамическая" в названии темы. эти шапки будут редактировать постоянно или ты один раз их придумал для всех таблиц и всё?
1
|
||||||
|
Особый статус
623 / 221 / 164
Регистрация: 18.11.2015
Сообщений: 1,086
|
||||||||||||||
| 08.11.2017, 17:58 [ТС] | ||||||||||||||
)
0
|
||||||||||||||
|
890 / 725 / 447
Регистрация: 13.07.2015
Сообщений: 2,277
|
||||||
| 08.11.2017, 22:33 | ||||||
|
конечно вручную такие данные писать глупо, да и велика вероятность ошибки.
поэтому набросал пока простенький конструктор
в базе она всегда будет в нужном порядке, и мозг напрягать не надо.
1
|
||||||
|
Особый статус
623 / 221 / 164
Регистрация: 18.11.2015
Сообщений: 1,086
|
||
| 09.11.2017, 12:36 [ТС] | ||
|
Интересный у вас конструктор получился, и правда визуально легче составлять. Но вот как пройтись по получившейся шапке и сохранить ее в БД? И наверное самый главный вопрос, какую можно создать структуру, чтобы можно было привязывать к шапке данные? Ведь при смене порядка данные должны быть неразлучно закреплены с шапкой... Мой мозг уже ничего не придумывает, кроме как к определенной ячейке по идентификатору прибавлять строки снизу. Не знаю правильный метод, но что-то типа append наверное... Добавлено через 39 секунд По форме пройтись не проблема, но с таким еще не сталкивался
0
|
||
|
890 / 725 / 447
Регистрация: 13.07.2015
Сообщений: 2,277
|
|
| 09.11.2017, 12:45 | |
|
я тоже подумал, шапку нужно строить снизу, т.е. ты сначала именно перечисляешь все колонки данных типа
суп хлеб чай компот потом сверху добавляешь строки и пишешь еда напитки и растягиваешь так чтобы они были над нужными ячейками потом добавляешь еще одну растягиваешь на все 4 клетки и пишешь пища как то так. наверно надо и правда колонки данных брать как корень этой шапки, то есть ты выбираешь таблицу с данными к которой хочешь построить шапку, она выплевывает название колонок в базе, ты их менять не можешь, можешь только пересортировать и написать им русские названия, далее надо этой строкой уже строишь шапку из объединенных ячеек как тебе надо и сколько уровней надо. потом если захочется поменять местами меняешь в первой строке порядок и ручками двигаешь все котегории в верхних слоях как тебе надо пока не получишь желаемую структуру делать чтобы они автоматизированно весь верх двигался за колонкой очень заморочено и сложно будет. а так кнопки управления можно не в каждой ячейке сделать, а снизу а щелкаешь только мышкой выделяешь ячейку и ей параметры выствляешь. так нагляднее в итоге шаблон будет в конструкторе
0
|
|
|
Особый статус
623 / 221 / 164
Регистрация: 18.11.2015
Сообщений: 1,086
|
||||||||||||
| 10.11.2017, 21:18 [ТС] | ||||||||||||
Вот, я объединил вашу реализацию с БД: - Прикрепляю дамп Базы; - Прикрепляю архив с приложением; -- Конфигурация config.php -- j.json c массивом -- Table.php класс Table, тут все основное -- index.php понятно, там несколько способов создания шапки В предпоследней таблице, с желтыми ячейками то, что сейчас хочу сказать, т.е с add data добавлять строки, таким же образом возможно ли задать <td id="row-13"... и к нему уже добавлять, что-то типа:
![]() Я может и подогнал, но что-то он глюкованный, некоторые ячейки не в своих местах...
0
|
||||||||||||
|
Особый статус
623 / 221 / 164
Регистрация: 18.11.2015
Сообщений: 1,086
|
|
| 10.11.2017, 21:19 [ТС] | |
|
Вот еще на всякий загрузил на диск: https://yadi.sk/d/OFJ53XNA3PbBnZ
0
|
|
| 10.11.2017, 21:19 | |
|
Помогаю со студенческими работами здесь
19
Динамическая таблица Динамическая Таблица Динамическая таблица динамическая таблица Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога
Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|