» »

hierarhija, npr. kategorij

hierarhija, npr. kategorij

Zzzzzzz ::

Ahoj

Dajmo reč, da imam v bazi naslednja polja:

id, parent, kategorija
1, 0, kategorija1
2, 0, kategorija2
3, 1, kategorija1_1
4, 2, kategorija2_1
5, 0, kategorija3
6, 1, kategorija1_2
7, 4, kategorija2_1_1
..........
..........

Pač tak "simpl" seznamček. Iz take tabele moram dobit 1-D array, ki bi bil razporejen nekako takole:
0: kategorija1
1: kategorija1_1
2: kategorija1_2
3: kategorija2
4: kategorija2_1
5: kategorija2_1_1
6: kategorija2_2
7: kategorija2_2_1
8: kategorija2_2_1_1
9: kategorija2_3
10: kategorija3
..........
..........

A obstaja kaka simpl rešitev za tole? Al pa vsaj kk dobr nasvet?
  • spremenil: Zzzzzzz ()

OwcA ::

Z SQL dvomim, da se to da naresti v enem koraku. Sam bi enostavno pobral podatke iz baze karkršni so in jih spravil v linked list ter to izpisal.
Otroška radovednost - gonilo napredka.

kopernik ::

Owca ima prav. Plain SQL odpove. Najlažje je z rekurzijo, ker je to nekaj podobnega drevesu. Torej, iz baze prebereš vse podatke, potem pa moraš z eno metodo te podatke preurediti. Če ti rekurzija ni všeč, uporabi while zanko (malo več dela, ampak ni težko).

lp

Zzzzzzz ::

Prejle sm pozabu: Tole rabm naredt v PHP-ju. :D Tko da, na kaj si mislil z "linked list"?

Sem si kr mislu, da se z SQL-om tega ne da delat... Torej bo potreba poseči po bolj drastičnih merah: Npr. pamet v roke in pisat! :8)

Ziga Dolhar ::

Veš kako imam jaz,

itemID | parentID | ostali potrebni stolpci

itemID je za vsakega unique, parentID se pa nanaša na itemID, pod katerim mora biti v hierarhiji. Primer:

1 | 0 | glavni meni
2 | 0 Ądrugi glavni meni
3 | 1 | nekaj pod 1. menijem
3 | 3 | še nekaj pod 1. podmenijem 1. menija ;)

Potem pa to s PHPjem sestavim v array.
https://dolhar.si/

Zzzzzzz ::

Glih prbližno tako imam jst.

A mi lahko poveš, v kak array to ti sestavš in približno kako?
Jst rabm najveš 2-D array. Primer:
$zapisi[0]['id'] = ...;
$zapisi[0]['tekst'] = ...;
$zapisi[1]['id'] = ...;
.............
.............

A je moje malo predvidevanje pravilno:
1. najprej vse elemente z baze dam v array
2. vzamem element, ki nima nadrejenega in ga dam na konec v nov array
3. vzamem element, ki je podrejen glavnemu elementu
4. ga dam v ta nov array na konec
5. pogledam, če je kak element podrejen temu novododanemu elementu
6. če je, nadaljujem v 4. točki
7. vzamem naslednji element in nadaljujem v tretji točki
8. če nima podrejenih, nadaljujem v drugi točki
9. ko ni več glavnih elementov, je konec

PS: morda je čudno napisano, ampak zase verjamem, da sem boljši programer kot pa pisatelj... :\

darh ::

za MySQL ne vem... za pgSQL maš en patch da podpira tudi to, pol pa narediš en fancy query in dela..

Drugače pa... preberi vse in nato shranjuj podatke o posamezdni veji:
- parentID
- childID (en array vseh ki so spodej)
- ostali info

pol pa z rekurzivno funkcijo (taka ki kliče sama sebe) izvedeš izpišeš... to je pač eden od načinov in jest imam tako rešeno..


no ja.. v bistvu, tako kot je zvonko napisal :)





Storing Hierarchical Data in a Database
Excuses are useless! Results are priceless!

Zgodovina sprememb…

  • spremenil: darh ()

Zzzzzzz ::

I do not use pgSQL... :( Tako da se bom mogu znajt drugače...

Ampak se bom lotu enkrat zvečer naredt... Zdej se mi ne da, k je tako lepo vreme... :D

Xbite, thx za tisti članek - se mi dopade, je zelo v redu, pa tudi prav mi bo prišel... :\

Thx everyone za pomoč.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo

Petarde

Oddelek: Loža
204790 (3219) urostech
»

Wordpress custom plugin

Oddelek: Izdelava spletišč
16919 (764) Gandalfar
»

php array sortiranje

Oddelek: Izdelava spletišč
91101 (824) Mesar
»

[PHP]Zajem podatkov iz baze

Oddelek: Programiranje
353768 (3405) cobrica
»

mysql - distinct

Oddelek: Izdelava spletišč
5999 (958) BigWhale

Več podobnih tem