![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 289 Pomógł: 1 Dołączył: 2.11.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Chcę w swoim serwisie internetowym system kategorii 3 rzędu (tzn. wybieramy najpierw 1, potem 2, a na końcu 3). Na początku chcę przypisać do 3 zmiennych listę kategorii 1, 2 i 3 rzędu w postaci tablicy (aby później ewentualnie wrzucić to w cache), a następnie przy pomocy pętli sprawdzać, czy się zawierają. Struktura tabeli z kategoriami id | parent | parent2 | nazwa | seonazwa | ile
Wszystko niby działa i generuje wynik mniej więcej w takiej postaci: Kategoria_glowna_1 -> Podkategoria_pierwsza1 ---> Podkategoria_druga1 ---> Podkategoria_druga2 -> Podkategoria_pierwsza2 -> Podkategoria_pierwsza3 Kategoria_glowna_2 Kategoria_glowna_3 Jednak zastanawia mnie, czy nie za bardzo przekombinowałem z pętlami i czy takie rozwiązanie wydaje się optymalne. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 233 Pomógł: 87 Dołączył: 6.03.2009 Ostrzeżenie: (40%) ![]() ![]() |
Ogólnie SQL nie nadaje się dobrze do przechowywania danych zorganizowanych hierarchicznie.
Lepiej nadaje się do tego XML albo jakaś lightowy container, np. JSON. W XML czy JSON swobodnie da się zapisywać co jest potomkiem czego, nie potrzeba żadnej nadmiarowości aby dodać kolejny element. Oczywiście są sposoby aby wydajnie przechowywać dane zorganizowane hierarchiczne w bazie SQL. http://www.google.pl/search?q=hierarchy+sql Przez grzeczność nie będę się pastwił nad zaprezentowanym przez Ciebie rozwiązaniem. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 237 Pomógł: 11 Dołączył: 12.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
Jeśli juz musisz w ten sposób, to ja bym to zrobił nieco inaczej. Bez orania bazy
![]() Tabela w bazie: id | parent | nazwa | link | pozycja 1 | 0 | rodzic1| aa1 | 1 2 | 1 | dziec1 | bb1 | 1 itd...
Ten post edytował Lombi 5.02.2012, 12:22:48 -------------------- znowu pomyliłem dwukropek ze średnikiem i starciłem pół dnia na szukanie błędu :)
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 24.07.2025 - 19:55 |