![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
lemniscate |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 23.11.2009 Репутация: нет Всего: нет |
Добрый день уважаемые форумчане! Обращаюсь с такой просьбой, помогите правильно (т.е. как можно проще) организовать структуру данных в mysql и вывод их в php
в конечном итоге надо получить html-таблицу следующего вида.
![]() таблица состоит из источников финансирования, и структура этих источников находится в постоянном изменении. Например могут убрать подисточники, могут источник целиком и т.д. у каждой организации разные источники. Т.е. структура таблицы плавающая. К тому же количество подисточников также варьируется на "глубину", т.е. не известно сколько их может быть, например субсидия по ГЗ это подисточник бюджета, а услуги это источник субсидии на ГЗ. Может произойти так что и у услуги появятся свои подисточники и т.д. Это маленький кусочек из огромной таблицы. Экономисты раньше вели его в excele, что крайне не удобно. Вообщем, конкретно в данном примере, колонки - Услуги, Хоз., Имущество и Целевая субсидия - колонки которые содержат конкретные значения. а Колонки Всего по всем..., Всего по бюджету, Субсидия по ГЗ это колонки с суммами и эти суммы, думаю лучше и не хранить в бд, а суммировать при выводе. Подскажите как правильно организовать структуру хранения в бд этих данных. Пока думаю сделать чтобы в одной таблице хранился список всех источников и подисточников, при это в каждой строке указывалось к ид какого источника относится данный подисточник. ну например что то в этом роде: ![]() где поле plan_src_sub_id и есть указатель на своего "родителя" т.е. к какому источнику относится. Но берут меня сомнения по поводу этого способа. Прошу помочь как сделать лучше? |
|||
|
||||
vlproject |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 27.5.2012 Репутация: нет Всего: нет |
Именно так и надо хранить, ведь у каждого источника есть:
Только при удалении источника не забывайте проверять, есть ли у него дети (из по хорошему тоже удалять надо) |
|||
|
||||
lemniscate |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 23.11.2009 Репутация: нет Всего: нет |
Ок, спасибо! так и сделал.
Сделал вот такую функцию.
Но вот ни как не могу сообразить, как сделать так чтобы данная функция строила таблицу в том виде которая необходима как в первой теме? Т.е. чтобы все "дочки" были под строкой 'в том числе'. Это сообщение отредактировал(а) lemniscate - 7.6.2012, 10:39 |
|||
|
||||
lemniscate |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 23.11.2009 Репутация: нет Всего: нет |
неужели никто не знает как? :(
|
|||
|
||||
MaXL |
|
||||
![]() Developer ![]() ![]() Профиль Группа: Участник Сообщений: 380 Регистрация: 24.10.2005 Где: Владивосток Репутация: нет Всего: 2 |
а в вашей структуре могут быть циклы ? т.е. может у какой-то записи быть два родителя ? lemniscate функцию выводящую это писать лениво. использование рекурсии правильный подход, но может быть стоит пользоваться на colspan и rowspan, а вставлять дополнительные таблицы, содержащие подисточники, т.е. что-то типо:
т.е. если есть дочернии, то прописываешь rowspan="2" и рекурсивно вызываешь себя. -------------------- MaXL |
||||
|
|||||
lemniscate |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 23.11.2009 Репутация: нет Всего: нет |
тогда другой вопрос, если сделать все дочерние элементы в отдельную таблицу то как размеры ячеек вложенной таблицы согласуются с размеры тех данных которые будут ниже, а там может быть более сотни строк содержащие значения ...
|
|||
|
||||
MaXL |
|
|||
![]() Developer ![]() ![]() Профиль Группа: Участник Сообщений: 380 Регистрация: 24.10.2005 Где: Владивосток Репутация: нет Всего: 2 |
не понял.
ячейка же будет растягиваться, под своё содержимое. -------------------- MaXL |
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Базы Данных | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |