Autor Zpráva
Jirin
Profil
Mám tabulku, v které jsou uloženy komentáře k článku. Komentovat lze do vláken a to je problém. Jak udělat, abych mohl stránkovat tak, že bude vždy dvacet příspěvků na stránce.

Struktura tabulky je (co se týče stromu):
parent (rodic predchudce)
level (uroven ve stromu - odsazeni)

Ted to delam tak, ze vyberu vse z DTB a pak to teprve sestavim v php. Nabizi se tedy vybrat sestavit a zobrazit ty ktere potrebuji, ale to je hodne osklive. Nejake lepsi reseni?
Kajman
Profil
Pohledejte "traverzování kolem stromu".
Jirin
Profil
Travrzování kolem stromu znám, nicmene jde u nej nejak rozumne provést stránkování? Nemluvě o tom, že bych rád zanechal strukturu, nez to vse prevadel...
Kajman
Profil
Traverzování přinese výhodu, že můžete komentáře seřadit podle lft. Stránkování uděláte pomocí limit a offset jako u každého jiného stránkování.
Jirin
Profil
Ok, to by asi mělo fungovat. Ještě se zeptám, je možné v tomhle případě možné i to, že by bylo jednou řazení podle lft (a stránkování klasicky jak píšete) a pak možnost přepnout, že by byly zase odpovědi ve vláknech seřazeny obráceně?

Zkrátka klasické řazení podle lft
1
- 1.1
- 1.2
- 1.3

a pak alternativni razeni ve stylu
1
- 1.3
- 1.2
- 1.1

napada me jedine delat si alternativni lft, aby šlo s tím stránkovat....
Taps
Profil
Jirin:
http://php.vrana.cz/traverzovani-kolem-stromu-prakticky.php
Kajman
Profil
Jirin:
Na dva stromy budou asi opravdu potřeba dvakrát pomocné sloupce lft a rgt.
Jirin
Profil
Ještě teď přemýšlím, já chci mít ty komentáře, jako jsou třeba na idnesu. Tedy ty nová vlákna budou nahoře a uvnitř toho vlákna pak budou seřazeny podle času. Tedy něco takového

13:00
- 14:15
- 14:30

11:00
- 13:00
- 13:30

Je na tohle vhodné traverzování/nested tree? Protože díky tomu, vždy když přidá někdo nový příspěvek, tak pokud se nemýlím budu muset přepočítat celý ten strom, že?
Kajman
Profil
Ano, při přidání uzlu uvnitř stromu se ovlivní předpočítané hodnoty i jiným uzlům - viz [#6]

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: