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.
Rodokmeň - PHP a HTML
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
Re: Rodokmeň - PHP a HTML
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
Re: Rodokmeň - PHP a HTML
Je to PHP objekt, to som napísal, pokiaľ chceš konktétne ako vypadá, tak takto:
Č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.
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
- 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
- object(stdClass)[26]
- 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
- object(stdClass)[25]
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
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
Re: Rodokmeň - PHP a HTML
sprav si nejakú funkciu vypis($pes) v ktorej ju znova rekurzivne zavoláš pre matku aj otca, takže nejajko takto:
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)
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 );
}
}
Re: Rodokmeň - PHP a HTML
Ďakujem, i s tvojou pomocou a troškou skúšania, to je funkčné. Vďaka