Rodokmeň - PHP a HTML

Programovacie jazyky, rady, poradňa...
zhulo
Medium Expert
Medium Expert
Príspevky: 86
Registrovaný: 01 nov 2008, 20:51

Rodokmeň - PHP a HTML

Príspevok od používateľa zhulo »

Mám v PHP objekt aktuálneho človeka, s matkou a otcom, čo sú zas objekty človeka ...
A potrebujem z toho vykresliť Rodokmeň vo forme tabuľky, či už vertikálnej alebo horizontálnej, to je jedno. Taktiež je jedno, či to bude table, alebo len divká napozíciované.
Rozmýšľam, ako debo, ako na to, no nič ma nenapadá, tak hľadám pomoc tu.

Pre lepšie pochopenie obrázok. Mám to čierne, potrebujem to červené:
Pričom treba myslieť však i na to, že u niektorých ľuďoch nemusí byť dostupný daný údaj (otec/matka) a tak nech to funguje korektne.

Vďaka za prípadnú pomoc.
Prílohy
rodokmen.png
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Rodokmeň - PHP a HTML

Príspevok od používateľa audiotrack »

je to obyčajné vykreslenie binárneho stromu. Problém absolútne žiaden. Vlastne jeden tu je, že si nič o tom nenapísal. Nevieme či máš tie dáta v poliach, alebo v databáze alebo čo, dokonca ani ako vyzerá ten objekt človeka. Pýtaš sa veľmi všeobecne, takže jediná odpoveď môže byť takto všeobecná ako som ti dal
zhulo
Medium Expert
Medium Expert
Príspevky: 86
Registrovaný: 01 nov 2008, 20:51

Re: Rodokmeň - PHP a HTML

Príspevok od používateľa zhulo »

Je to PHP objekt, to som napísal, pokiaľ chceš konktétne ako vypadá, tak takto:
Spoiler
object(stdClass)[24]
  • public 'dog__id' => string '2' (length=1)
    public 'dog__name' => string 'Rexik' (length=5)
    public 'dog__id_mother' =>
    • object(stdClass)[25]
      public 'dog__id' => string '1' (length=1)
      public 'dog__name' => string 'Akia Tawy' (length=9)
      public 'dog__id_mother' =>
      • object(stdClass)[26]
        public 'dog__id' => string '10' (length=2)
        public 'dog__name' => string 'Kera' (length=4)
        public 'dog__id_mother' => null
        public 'dog__id_father' => null
      public 'dog__id_father' =>
      • object(stdClass)[27]
        public 'dog__id' => string '9' (length=1)
        public 'dog__name' => string 'Buro' (length=4)
        public 'dog__id_mother' => null
        public 'dog__id_father' => null
    public 'dog__id_father' =>
    • object(stdClass)[28]
      public 'dog__id' => string '7' (length=1)
      public 'dog__name' => string 'Laika' (length=5)
      public 'dog__id_mother' => null
      public 'dog__id_father' => null
Červeným je aktuálny pes, pre ktorého rodokmeň vypísať chcem. Modrým sú rodičia, zeleným starí rodičia.
A ak to neni problém, tak mi prosím daj hint, ako na to. Lebo ako to robím, tak to robím, tak nič nefunguje korektne.
Ono samotné vypísanie problém nie je, ale už uloženie do tak vyzerajúcej tabuľky, to už áno.
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Rodokmeň - PHP a HTML

Príspevok od používateľa audiotrack »

sprav si nejakú funkciu vypis($pes) v ktorej ju znova rekurzivne zavoláš pre matku aj otca, takže nejajko takto:

Kód: Vybrať všetko

vypis($pes);  //zavolanie na nasho psa


function vypis($pes){
echo '<div id="pes_'.$pes->dog_id.'">'.$pes->dog__name.'</div>';  //vypisem udaj o psovi
if($pes->dog__id_father != null){  //ma otca
    //vykreslenie čiary k novému divu
    vypis($pes->dog_id_father);
}
if($pes->dog__id_mother != null){  //ma matku
    //vykreslenie čiary k novému divu
    vypis($pes->dog_id_mother );
}
}
pozíciu tomu divu vypočítaš podľa vnorenia, každý "pra" predok bude o X pixelov posunutý. To si zabezpečíš napríklad statickou premennou, ktorú vždy pri volaní funkcie pes zvýšiš, a pri skončení volania zase znížiš. S tými čiarami to bude trošku komplikovanejšie, rovnako tak naťahovanie do výšky bude robiť problém ak bude veľa tých vetiev. Preto by som to riešil až dodatočne cez javascript (zato som tomu divu dal jedinečný id identifikátor aby som ich vedel potom upratovať na stránke. Ešte by si k tomu mohol pridať údaj ku ktorej "pra" vetve patria, nie len jeho ID lebo inak nebudeš vedieť ako ich "upratať". Ak to nepotrebuješ nejako pekne prehľadne, tak tieto čachre-machre úplne vynechaj a rob to len do stlpcov bez čiar alebo buniek)
zhulo
Medium Expert
Medium Expert
Príspevky: 86
Registrovaný: 01 nov 2008, 20:51

Re: Rodokmeň - PHP a HTML

Príspevok od používateľa zhulo »

Ďakujem, i s tvojou pomocou a troškou skúšania, to je funkčné. Vďaka
Napísať odpoveď