Forum » Izdelava spletišč » 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?
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
lp
Zzzzzzz ::
Prejle sm pozabu: Tole rabm naredt v PHP-ju. 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!
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!
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.
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...
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
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...
Xbite, thx za tisti članek - se mi dopade, je zelo v redu, pa tudi prav mi bo prišel...
Thx everyone za pomoč.
Ampak se bom lotu enkrat zvečer naredt... Zdej se mi ne da, k je tako lepo vreme...
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 ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
⊘ | PetardeOddelek: Loža | 5052 (3481) | urostech |
» | Wordpress custom pluginOddelek: Izdelava spletišč | 989 (834) | Gandalfar |
» | php array sortiranjeOddelek: Izdelava spletišč | 1188 (911) | Mesar |
» | [PHP]Zajem podatkov iz bazeOddelek: Programiranje | 4038 (3675) | cobrica |
» | mysql - distinctOddelek: Izdelava spletišč | 1040 (999) | BigWhale |