Как я могу создать многоиерархическое «дерево»?(Если это можно назвать деревом)
-
22-07-2019 - |
Вопрос
у меня есть список того, что можно сказать courses
и certificates
и fun_days
.Все это называется objects
.К каждому объекту свои требования object_requirements
.Требование может быть одним из objects
или несколько из них.
Вы можете взять любой object
без object_requirements
как starting point
.«Каждому разрешено иметь эти объекты».
Так что это может быть так:
Introduction_course
является отправной точкой (нет требований)Introduction_certificate
могут получить те, у кого естьIntroduction_course
(этотcourse
это требование этогоcertificate
)Funday_swimming
могут получить те, у кого естьIntroduction_certificate
(сертификат является обязательным требованиемfun_day
).
Есть ли способ создать визуальное представление иерархического или структурированного потока этой системы?Пример довольно простой, но в любом месте «дерева» должно быть возможно наличие нескольких требований.
Вот как я храню требования:
TABLE: OBJECT_REQUIREMENT
OBJECTTYPE (pk)
OBJECTID (pk)
REQUIREMENT_OBJECTTYPE (pk)
REQUIREMENT_OBJECTID (pk)
TABLE: COURSE
OBJECTID (pk)
OBJECTTYPE // value is always [1] for course
TABLE: CERTIFICATE
OBJECTID (pk)
OBJECTTYPE // value is always [2] for certificate
TABLE: FUN_DAY
OBJECTID (pk)
OBJECTTYPE // value is always [3] for fun_day
О, и я использую PHP и MySQL.Но любая часть программного обеспечения, которая могла бы генерировать эти визуальные представления, также была бы более чем желательна!
Решение
Вы можете рассмотреть что-то вроде ориентированного графа, для которого может быть полезен предыдущий вопрос SO:
Другие советы
Вы можете использовать <li>
тег, поэтому:
- Введение_курс
- Введение_сертификат
- funday_swimming
- Еще один сертификат
Если вы пытаетесь показать это в html.
Если вам нужно что-то более графическое, вы можете использовать файлы svg или теги холста (в html5) для рисования графика или просто использовать lib_gd для рисования растрового изображения и при необходимости превратить его в карту изображения.