Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Fórum so stromovou štruktúrou

Máš tabuľku "odpoved" so stĺpcami:
- odpoved_id (int not null: primárny kľúč, autonumber),
- otazka_id (int not null: cudzí kľúč do tabuľky s otázkami),
- rodic_id (int null: null ak je to priamo odpoveď na otázku; v opačnom prípade odpoved_id odpovede, na ktorú táto odpoveď reaguje),
- cas (timestamp: čas vloženia odpovede),
- text (text: text odpovede).

Pri zobrazení stromu odpovedí na otázku vytiahneš z databázy všetky odpovede na otázku jedným selectom: select * from odpoved where otazka_id=$otazka_id order by cas.

Potom prebehneš všetky vrátené riadky. Z každého riadku môžeš napr. vytvoriť objekt triedy Odpoved. Aby si vedel rýchlo nájsť odpoveď podľa id, tak si ešte vytvoríš mapovanie z id odpovede na odpoveď (Dictionary<int, Odpoved>).

A toto je najdôležitejšie: Počas toho prebiehania všetkých riadkov si ešte vytváraš hešovaciu tabuľku, pomocou ktorej budeš vedieť zistiť z odpoved_id zoznam odpovedí, ktoré na danú odpoveď reagujú. Čiže hešovacia tabuľka môže byť napr. typu Dictionary<int, List<int>> (odpovede bez rodiča môžeš ukladať napr. pod odpoved_id=0).
(Prípadne keď máš objekt pre odpoveď, tak môžeš tie reakcie pridávať priamo doňho a nemusíš mať navyše hešovaciu tabuľku, ale potom potrebuješ ešte nejaký zoznam pre odpovede, ktoré nie sú reakciou na inú odpoveď.)

Nakoniec máš strom v pamäti - zoznam odpovedí a hešovaciu tabuľku so štruktúrou.
Ten môžeš vykresliť ako chceš (rekurzívne alebo pomocou zásobníku).

Reakce na odpověď

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny