Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Modified Preorder Tree Traversal

[es] :: PHP :: Modified Preorder Tree Traversal

[ Pregleda: 2276 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

sekvoja

Član broj: 91239
Poruke: 269
*.ptt.rs.



Profil

icon Modified Preorder Tree Traversal21.10.2009. u 21:02 - pre 176 meseci
Pozdrav svima,

Pokusavam da napravim menu koji ce se ucitavati iz baze.
Koristio sam sledeci tutorial:

http://articles.sitepoint.com/print/hierarchical-data-database

Ta varijanta radi lepo, ali samo ako unapred znam dubinu do koje ce ici menu.

Sada pokusavam da da omogucim expandovanje nekog elementa ali mi to ne polazi za rukom.

Jel neko koristio pomenutu metodu? Kako je resio problem?

[Ovu poruku je menjao sekvoja dana 22.10.2009. u 13:38 GMT+1]

[Ovu poruku je menjao sekvoja dana 22.10.2009. u 13:38 GMT+1]
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-1.sezampro.yu.



+33 Profil

icon Re: Modified Preorder Tree Traversal21.10.2009. u 21:48 - pre 176 meseci
To se inače zove Nested Set Model, i uopšte ne treba unapred da znaš dubinu. Probaj recimo ovakav neki upit:
Code:
SELECT node.name, (COUNT(parent.name) - 1) AS depth
FROM tree  AS node, tree AS parent
WHERE node.lft BETWEEN parent.lft AND parent.rgt
GROUP BY node.name
ORDER BY node.lft;

I trebao bi da dobiješ ovako nešto:
Code:
+----------------------+-------+
| name                 | depth |
+----------------------+-------+
| Food                 |     0 |
| Fruit                |     1 |
| Red                  |     2 |
| Cherry               |     3 |
| Yellow               |     2 |
| Banana               |     3 |
| Meat                 |     1 |
| Beef                 |     2 |
| Pork                 |     2 |
+----------------------+-------+

I onda posle na osnovu tih dubina lagano možeš da razradiš <ul><li> logiku.
 
Odgovor na temu

sekvoja

Član broj: 91239
Poruke: 269
*.ptt.rs.



Profil

icon Re: Modified Preorder Tree Traversal21.10.2009. u 22:33 - pre 176 meseci
A jel bi mogo malo da pojasnis kakva je struktura tabele, i ako si
radio na taj nacin okaci kod pa da vidimo...
 
Odgovor na temu

agvozden
Aleksandar Gvozden
founder
Info-G
Beograd

Član broj: 37813
Poruke: 1123
91.150.123.*

Sajt: www.gvozden.info


+68 Profil

icon Re: Modified Preorder Tree Traversal21.10.2009. u 22:40 - pre 176 meseci
Nested metoda je vrlo mocna, ali moze da zakomplikuje zivot, a nekada i nije toliko potrebna.

Razmisli ima li prostijeg nacina da uradis to sto ti treba, jer ne bi trebalo da se upustas u ovo a da ti nije jasno. Imaces kasnije muke...
 
Odgovor na temu

sekvoja

Član broj: 91239
Poruke: 269
*.ptt.rs.



Profil

icon Re: Modified Preorder Tree Traversal21.10.2009. u 22:49 - pre 176 meseci
Za sada mogu pomocu onog tutorijala da dodajem elemente unutar neke grane,
ali imam velike muke da dodam novu granu a da ne poremetim strukturu.
Mora da postoji nacin...
 
Odgovor na temu

Man-Wolf
Mihailo Joksimovic
Beograd

Član broj: 17016
Poruke: 873
91.148.93.*



+13 Profil

icon Re: Modified Preorder Tree Traversal22.10.2009. u 08:13 - pre 176 meseci
Prouci ovaj tutorial:

http://dev.mysql.com/tech-reso...rticles/hierarchical-data.html

Objasnjava u potpunosti kako se radi sa ugnjedjenim modelom ...

P.S. Kao sto ti rece @agvozden, ako vec unapred znas dubinu do koje ce ti ici podaci, onda mozes i bez ovoga ... Medjutim, definitivno ce ti jednom zatrebati i moraces da ga savladas i razumes :-))

Pozdrav
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-2.sezampro.yu.



+33 Profil

icon Re: Modified Preorder Tree Traversal22.10.2009. u 10:09 - pre 176 meseci
Čekaj, ti si ovu temu nazvao "Modified Preorder Tree Traversal", a sad se ispostavlja da si ipak radio po onom prvom metodu sa tog linka kojeg si poslao. Ja sam ti dao primer kako bi to išlo za slučaj da ideš po Nested Set modelu, i da je tabela npr. ovakva:
Code:
CREATE TABLE tree (
 id INT AUTO_INCREMENT PRIMARY KEY,
 title VARCHAR(40) NOT NULL,
 lft INT NOT NULL,
 rgt INT NOT NULL
);

Odluči se prvo dal' hoćeš da ideš sa Adjacency List ili Nested Set modelom. U principu stvari stoje ovako, kod Adjacency List unos novih stavki je maksimalno pojednostavljen, ali je jako komplikovano dobijanje hijerarhije. Kod Nested Set modela, je suprotno, pri unosu novih stavki treba da se obavi i po nekoliko upita, ali je dobijanje hijerarhije jako jednostavno i elegantno.

Pogledaj obavezno taj link kojeg je ostavio Man-Wolf, tu imaš jako lepo poređenje ova dva modela kroz primere.
 
Odgovor na temu

sekvoja

Član broj: 91239
Poruke: 269
*.ptt.rs.



Profil

icon Re: Modified Preorder Tree Traversal22.10.2009. u 12:43 - pre 176 meseci
Pa na strani tog tutoriala lepo pise da se ta metoda zove Modified Preorder Tree Traversal.
I sta je tu cudno?

Ne znam do koje ce dubine ici hijerarhija pa cu morati da proucim i taj tutorijal sa
http://dev.mysql.com/tech-reso...rchical-data.htmldev.mysql.com

Hvala :)
 
Odgovor na temu

agvozden
Aleksandar Gvozden
founder
Info-G
Beograd

Član broj: 37813
Poruke: 1123
*.b92.net.

Sajt: www.gvozden.info


+68 Profil

icon Re: Modified Preorder Tree Traversal22.10.2009. u 15:00 - pre 176 meseci
I jos da dodam da je ovaj princip bolji i u mnogo slucajeva brzi, ali ne uvek.
Ukoliko imas jednostavnu kategorizaciju i ne zelis da uvlacis sve podnodove onda je ovaj nacin sporiji.
Recimo, listanje podkategorija jedne kategorije... i ukoliko samo to radis onda nema smisla primenjivati nested.

Moras znati sta ti konkretno treba, kakve ces upite koristiti i onda izaberes model organizacije podataka sa kojim ces raditi
 
Odgovor na temu

[es] :: PHP :: Modified Preorder Tree Traversal

[ Pregleda: 2276 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.