Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] menu wielopoziomowe - jak wyświetlić podkategorię w odpowiedniej kategorii?
pafeu
post
Post #1





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 9.10.2011

Ostrzeżenie: (0%)
-----


witam
mam bazę danych
  1. INSERT INTO `categories` (`cat_id`, `parent_id`, `left_id`, `right_id`, `level`, `cat_name`, `sub_counter`, `counter`, `cat_colour`, `cat_image`) VALUES
  2. (1, -1, 1, 70, -1, 'All', 5, 0, '', ''),
  3. (214, 1, 18, 69, 0, 'KATEGORIA', 0, 0, '', ''),
  4. (223, 214, 19, 68, 1, 'PODKATEGORIA', 0, 0, '', ''),
  5. (224, 223, 66, 67, 2, 'POPDPODKATEGORIA', 0, 0, '', ''),

kategorie pobieram
  1. $query = "SELECT * FROM categories WHERE parent_id=1 ORDER BY left_id";
  2. $wynik = mysql_query($query);
  3. while ($row = mysql_fetch_assoc($wynik)) {
  4. echo $row['cat_name'] .' - - - ' ;
  5. }

podkategorie wyświetlam:
  1. $query = "SELECT * FROM categories WHERE parent_id>1 ORDER BY left_id";
  2. $wynik = mysql_query($query);
  3. while ($row = mysql_fetch_assoc($wynik)) {
  4. echo $row['cat_name'] .' - - - ' ;
  5. }

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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
ghost1511
post
Post #2





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
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 11.10.2025 - 12:42