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

Chystám sa spraviť fórum a tu na poradni je aj link na "návod", ale aj tak tomu celkom nerozumiem. Vedel by mi to niekto vysvetliť ako nechápavému? Napr., či treba vytvoriť tabuľku, potom ju vymazať alebo ako to vlastne spracovať, keď si to tým selectom vytiahnem? Proste len nejako slovne vysvetliť, ja si kód napíšem sám.

http://pc.poradna.net/question/view/145676-diskusne -forum-so-stromovou-strukturou
http://www.sitepoint.com/forums/showthread.php?t=21 5857

Předmět Autor Datum
Máš tabuľku "odpoved" so stĺpcami: - odpoved_id (int not null: primárny kľúč, autonumber), - otazka_…
los 16.11.2007 15:22
los
Tiež som si myslel, že sa jedná o načítanie do pamäti. Nehrozí pretečenie pamäte pri rozsiahlej disk… poslední
msx. 16.11.2007 18:42
msx.

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).

Zpět do poradny Odpovědět na původní otázku Nahoru