Nasıl bir multi-hiyerarşik 'ağaç' oluşturabilirim?

2 Cevap php

diyorum courses ve certificates ve fun_days bir listesi var. Bunlar denir objects. Her nesne onun gereklerini object_requirements vardır. Bir gereklilik objects bir ya da birkaç tanesi olabilir.

Sen alabilir herhangi bir object without object_requirements bir starting point gibi. "Herkes have bu nesnelere izin verilir."

Yani bu olabilir:

  • Introduction_course bir başlangıç ​​noktasıdır (hiçbir gereksinimleri)
  • Introduction_certificate olanlar tarafından elde edilebilir Introduction_course (bu course, bu bir gereklilik olan certificate)
  • Funday_swimming bir Introduction_certificate (sertifika fun_day bir gerekliliktir) sahip olanlar tarafından elde edilebilir.

Bu sistemin biraz hiyerarşik veya yapılveırılmış-akışı bir görsel temsilini oluşturmak için bir yolu var mı? Örnek oldukça basittir, ancak birden gereksinimleri her yerde 'ağaç' mümkün olmalıdır.

Bu benim gereksinimlerini saklamak nasıl:

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 ve PHP ve MySQL kullanabilirsiniz. Ancak bu görsel temsillerini yaratacaktır yazılımın herhangi bir parça da daha hoş olurdu!

2 Cevap

Hangi Bu önceki SO soru yararlı olabilir için, yönlendirilmiş bir grafik gibi bir şey düşünebilirsiniz:

http://stackoverflow.com/questions/850031/how-to-do-directed-graph-drawing-in-php

Sen bu yüzden, <li> etiketi kullanabilirsiniz:

  • Introduction_course
    • Introduction_certificate
      • funday_swimming

    • Başka bir sertifika

Html bunu göstermeye çalışıyor iseniz.

Eğer daha fazla grafik bir şey istiyorsanız, sadece bir bitmap çizmek için lib_gd kullanın ve gerekirse bir imagemap içine yapmak, grafik çizmek için (html5) svg dosyaları veya tuval etiketleri kullanabilirsiniz, ya da olabilir.