Comment créer un "arbre" multi-hiérarchique? (Si cela peut être appelé un arbre)
-
22-07-2019 - |
Question
J'ai une liste de say courses
et certificates
et fun_days
. Ce sont tous appelés objects
. Chaque objet a ses exigences object_requirements
. Une exigence peut être l’un des object
ou plusieurs d’entre eux.
Vous pouvez utiliser n'importe quel starting point
sans Introduction_course
>> comme Introduction_certificate
. & "; Tout le monde est autorisé à avoir ces objets. &";
Il se pourrait donc que:
-
course
est un point de départ (aucune exigence) -
certificate
peut être obtenu par ceux qui ontFunday_swimming
(cecifun_day
est une exigence de ce <=>) - <=> peut être obtenu par ceux qui possèdent un <=> (le certificat est une exigence du <=>).
Existe-t-il un moyen de créer une représentation visuelle du flux hiérarchique ou quelque peu structuré de ce système? L'exemple est assez simple, mais il devrait être possible de créer plusieurs exigences n'importe où dans l'arborescence.
Voici comment je stocke les exigences:
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, j'utilise PHP et MySQL. Mais tout logiciel pouvant générer ces représentations visuelles serait également le bienvenu!
La solution
Vous pourriez envisager quelque chose comme un graphe dirigé auquel cette question précédente de SO pourrait être utile:
Autres conseils
Vous pouvez utiliser la balise <li>
, donc:
- cours d'introduction
- Introduction_certificate
- funday_swimming
- Un autre certificat
Si vous essayez de l'afficher en HTML.
Si vous voulez quelque chose de plus graphique, vous pouvez utiliser des fichiers svg ou des balises canvas (en html5) pour dessiner le graphique, ou simplement utiliser lib_gd pour dessiner un bitmap, et le transformer en un imagemap, si nécessaire. .