Zadejte hledaný výraz...

Ako clenit komentare – thread/tree

node
verified
rating uzivatele
(5 hodnocení)
10. 9. 2011 18:23:14
Ahojte. Aky system sa pouziva na clenenie komentarov do vlakien? Problem je, ze musim podla niecoho vediet ze:
A
-- B
-- C
-- F
-- G
D
E
-- H
To znamena ze nemozem komentare jendoducho zoradit podla datumu vytvorenia ale nejako musim sledovat strukturu. Ako na to ?
10. 9. 2011 18:23:14
https://webtrh.cz/diskuse/ako-clenit-komentare-thread-tree/#reply675747
hm
verified
rating uzivatele
(20 hodnocení)
10. 9. 2011 18:24:26
co treba rekurze, traverzovani?
10. 9. 2011 18:24:26
https://webtrh.cz/diskuse/ako-clenit-komentare-thread-tree/#reply675746
node
verified
rating uzivatele
(5 hodnocení)
10. 9. 2011 18:29:07
Este doplnim ze samozrejme nechcem robit query na kazdy komentar ci ma potomkov, to by bol nonsens.
10. 9. 2011 18:29:07
https://webtrh.cz/diskuse/ako-clenit-komentare-thread-tree/#reply675745
hm
verified
rating uzivatele
(20 hodnocení)
10. 9. 2011 18:35:45
proto je tu traverzovani :)
ale pokud je tech okmentu na jedne strance malo tak i multiple query nebude nic strasneho :) kazdopadne jak rikam, traverza
10. 9. 2011 18:35:45
https://webtrh.cz/diskuse/ako-clenit-komentare-thread-tree/#reply675744
Jan Matoušek
verified
rating uzivatele
(12 hodnocení)
10. 9. 2011 19:14:21
rekurzi bych na výpis komentářů nevolil, buď rozšířit tabulku o ord a lvl, nebo traverzovat
tady máš celkem pěkně napsaný článek a nastíněné výhody a nevýhody jednotlivých možností:
http://interval.cz/clanky/metody-ukladani-stromovych-dat-v-relacnich-databazich/
10. 9. 2011 19:14:21
https://webtrh.cz/diskuse/ako-clenit-komentare-thread-tree/#reply675743
hm
verified
rating uzivatele
(20 hodnocení)
10. 9. 2011 19:43:39
ord a lvl? tak to teda urcite ani nahodou, to neni relacni pristup a timpadem je v podstate spatne... rekurze neni vlastne vubec nic spatneho, je to vcelku klasicky pristup a pokud je pomala na to aby se provadela porad, tak se to proste cachuje :) proc to delat slozite kdyz to jde jednoduse... ostatne spravne optimalizovana aplikace vetsinu veci stejne cachuje takze pouzite metody jsou pak hodne vedlejsi (pokud se to negeneruje sekundy coz uz by vadilo v dobe kdy cache vyprsi)
10. 9. 2011 19:43:39
https://webtrh.cz/diskuse/ako-clenit-komentare-thread-tree/#reply675742
node
verified
rating uzivatele
(5 hodnocení)
10. 9. 2011 21:13:17
V tabulke som mal level(depth) a pridal som len order(position). Ako to bude s vykonom to sa dozviem az ked nasadim riesenie do ostrej prevadzky. Konkretne sa vsak jedna o komentare a u nich je priorita citanie a nie zapis, takze toto riesenie je optimalne. A nemyslim ze db update na napr 10 komentarov pre zmenu order-u je nejaka velka zataz, kedze prakticky ide iba o update tabulka set order = order + 1.
10. 9. 2011 21:13:17
https://webtrh.cz/diskuse/ako-clenit-komentare-thread-tree/#reply675741
node
verified
rating uzivatele
(5 hodnocení)
16. 9. 2011 00:38:50
Este mam jednu otazku - ako riesit potomkov ak je rodic nevydany/nepublikovany? Ak by som ich skryl, tak by tym mohla zaniknut celkom dlha diskusia :(
16. 9. 2011 00:38:50
https://webtrh.cz/diskuse/ako-clenit-komentare-thread-tree/#reply675740
hm
verified
rating uzivatele
(20 hodnocení)
16. 9. 2011 00:43:30
nechapu dotaz, pokud je neco nepublikovano, diskuse pod tim je samozrejme skryta take :) pokud z jakehokoliv duvodu ne, udela se tam proste vyjimka :) kazdoapdne jsem to stejne moc nepochopil...
16. 9. 2011 00:43:30
https://webtrh.cz/diskuse/ako-clenit-komentare-thread-tree/#reply675739
Zkuste to nějak takhle:
1) Struktura tabulky v tomhle duchu: comment (id, article_id, parent_comment_id, ... ).
2) potom jednoduše načtete všechny komentáře k danému tématu: SELECT ... WHERE article_id = X (+příp. navíc ORDER BY )...
3) ...a získané pole si jenoduchým, rekurzivním nebo i iterativním algoritmem seřadíte podle struktury parentů a zároveň každému záznamu při té příležitosti vygenerujete a přidáte parametr depth, aby se vám to dobře vypisovalo, a...
4) ...výsledek už pak jen hodíte do nějakého view
Proč takhle:
a) je to jednoduché. Jeden SQL, zpracování pole v PHPku, view
b) není tam redundance, takže se vám to nemůže nijak rozpadnout/kolidovat jako když budete dávat nějaké parametry hloubka nebo pořadí do databáze
c) jednoduše můžete zobrazit samostatně jakékoliv podvlánko úplně stejným postupem, akorát stanovíte výchozí parent.
d) to samé využijete v budoucnu k tisíci dalším stromovým strukturám co budete potřebovat.
Pokud by se mělo jednat o stránku s obrovským počtem záznamů a vysokou frekvencí zobrazování, pak by samozřejmě bylo vhodnější mít to před-seřazené už v DB prostřednictvím pomocného sloupce (tím zpomalíte ukládání, ale zrychlíte zobrazování). To je ale zřídkakdy v praxi potřeba, máte-li výše uvedené dobře napsané.
---------- Příspěvek doplněn 17.09.2011 v 09:15 ----------
Napsal node;701588
Este mam jednu otazku - ako riesit potomkov ak je rodic nevydany/nepublikovany? Ak by som ich skryl, tak by tym mohla zaniknut celkom dlha diskusia :(
Neskrývejte ho, ale skryjte jen jeho text. Často se taky dělá, že mu skryjete jen textový obsah, tak že ho zabalíte do něčeho jako
a přidáte tam hlášku "Tento příspěvek byl označen za urážlivý. Zobrazit příspěvek"
17. 9. 2011 09:11:47
https://webtrh.cz/diskuse/ako-clenit-komentare-thread-tree/#reply675738
node
verified
rating uzivatele
(5 hodnocení)
17. 9. 2011 18:23:25
Vyriesil som to ze skryjem cele vlakno ak sa parent nastavy na nevydany. Mazanie som myslim spominal, ale ak nie tak ak mazem parenta, priamim potomkom nastavim parenta root a hlbku zmenim na 0.
17. 9. 2011 18:23:25
https://webtrh.cz/diskuse/ako-clenit-komentare-thread-tree/#reply675737
Pro odpověď se přihlašte.
Přihlásit