![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 69 Pomógł: 0 Dołączył: 9.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
witam
mam bazę danych
kategorie pobieram
podkategorie wyświetlam:
Jak połączyć ze sobą kategorie i podkategorie aby podkategoria wyświetlała się pod odpowiednią kategorią? Ten post edytował pafeu 28.02.2014, 19:20:22 -------------------- ommo.pl - oświetlenie led i nie tylko
|
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 186 Pomógł: 18 Dołączył: 2.09.2010 Ostrzeżenie: (0%) ![]() ![]() |
A tak całkiem serio to w czym masz problem? Bo wygląda na to, że już na etapie projektowania bazy popełniłeś błąd (nie przewidziałeś pewnej sytuacji). Ten post edytował ghost1511 1.03.2014, 16:07:46 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 69 Pomógł: 0 Dołączył: 9.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
...już na etapie projektowania bazy popełniłeś błąd ... ... jaki błąd - co masz na myśli? -------------------- ommo.pl - oświetlenie led i nie tylko
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 186 Pomógł: 18 Dołączył: 2.09.2010 Ostrzeżenie: (0%) ![]() ![]() |
Zakładając że masz tylko parent_id a menu wielopoziomowe możesz pobrać wcześniej podmenu którego rodzica wcześniej nie pobrałeś np:
Kod ID PARENT_ID NAZWA 1 NULL MENU 2 3 PODMENU2 3 1 PODMENU1 Taka sytuacja może się zdarzyć kiedy manipulujesz kolejnością, np najpierw utworzysz grupy a później przypiszesz ich rodziców. Do głowy przychodzą mi dwa rozwiązania: Dodanie jakiegoś parametru który będzie odpowiadał za kolejność np: Kod ID PARENT_ID NAZWA KOLEJNOSC 1 NULL MENU 1 2 3 PODMENU2 3 3 1 PODMENU1 2 Ale wtedy musisz pilnować, aby nie wystąpiły jakieś konflikty typu powtórzenie (co możesz wymusić UNIQUE), by mieć pewność że wszystkie wartości są pobierane w odpowiedniej kolejności. Lub sprawdzać czy rodzic danego rekordu był pobrany wcześniej jeżeli tak to przypisać podmenu lub jeżeli nie to przesunąć go na następną pozycję. Choć gdy to piszę ten pomysł wydaje się karkołomny i pierwsze rozwiązanie wydaje się być łatwiejsze. Ten post edytował ghost1511 3.03.2014, 09:23:52 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 69 Pomógł: 0 Dołączył: 9.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
znalazłem takie rozwiązanie w necie
wydaje mi się że można zaadoptować do mojego przypadku
próbowałem zmodyfikować ale mi nie chce działać może ktoś pomoże? ![]() ? Ten post edytował pafeu 6.03.2014, 20:52:19 -------------------- ommo.pl - oświetlenie led i nie tylko
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
To Ci rozjaśni trochę umysł. To czego Ty używasz to Nested set
http://blog.mwojcik.pl/2008/02/17/drzewa-k...-php-metoda-ip/ |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 124 Pomógł: 22 Dołączył: 10.01.2014 Ostrzeżenie: (0%) ![]() ![]() |
Istnieją różne sposoby rozwiązania tego problemu w bazach pokroju MySQL (oracle chyba tylko nie ma z nimi problemów)
- Metoda depesza - Metoda IP - Metoda prawo-lewo - Parent ID Każda z metod ma zalety jak i wady i to którą zaimplementujesz do aktualnego projektu zależy od sytuacji. Osobiście najczęściej używam metody prawo-lewo w połączeniu z parent ID w celu szybkiej odbudowy. Jeżeli chodzi o metodę prawo-lewo. To na tym >> blogu << pewna blogerka świetnie opisała ten sposób w 6 częściowym artykule. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.06.2025 - 03:33 |