Wie kann ich einen Multi-hierarchischen ‚Baum‘ erstellen? (Wenn es ein Baum bezeichnet werden kann)
-
22-07-2019 - |
Frage
Ich habe eine Liste von sagen courses
und certificates
und fun_days
. Diese sind alle objects
genannt. Jedes Objekt hat seine Anforderungen object_requirements
. Eine Anforderung kann entweder eine der objects
oder mehrere von ihnen sein.
können Sie nehmen jede object
ohne object_requirements
als starting point
. "Jeder darf auf wurde die Objekte."
So könnte es sein, dass:
-
Introduction_course
ist ein Ausgangspunkt (keine Anforderungen) -
Introduction_certificate
kann von denen, dieIntroduction_course
erhalten wird (diescourse
ist eine Anforderung diesercertificate
) -
Funday_swimming
kann durch diejenigen, die erhalten werden, die einenIntroduction_certificate
haben (das Zertifikat ist eine Voraussetzung desfun_day
).
Gibt es eine Möglichkeit, eine visuelle Darstellung des hierarchischen oder etwas strukturierten Ablaufs dieses System zu schaffen? Das Beispiel ist ziemlich einfach, aber mehrere Anforderungen überall in dem ‚Baum‘ möglich sein.
Dies ist, wie lagere ich die Anforderungen:
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
Oh, und ich benutze PHP und MySQL. Aber jedes Stück Software, die diese visuellen Darstellungen erzeugen könnte, wäre mehr als willkommen auch!
Lösung
Sie könnte so etwas wie einen gerichteten Graphen betrachten, auf die sich diese vorherige Frage SO nützlich sein könnten:
Andere Tipps
Sie können den <li>
-Tag verwenden, so:
- Introduction_course
- Introduction_certificate
- funday_swimming
- Ein weiteres Zertifikat
Wenn Sie versuchen, es in html zu zeigen.
Wenn Sie wollen etwas, das mehr grafische ist, können Sie SVG-Dateien oder Leinwand-Tags (in html5), um die Grafik zu zeichnen, oder verwenden Sie einfach lib_gd eine Bitmap zu zeichnen, und sie in eine imagemap machen, wenn nötig .