Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] Wyświetlenie artykułów z kategorii i podkategorii.. 5 poziomów :/, niby proste pytanie, ale nie potrafie tego sensownie rozwiązać.
kukix
post 11.09.2009, 11:54:18
Post #1





Grupa: Zarejestrowani
Postów: 600
Pomógł: 2
Dołączył: 1.09.2002
Skąd: Wrocław

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


Witam.
Mam 6 poziomów kategorii... i artykuły, które mogą być przyporządkowane do jednej z nich..

Problem z tym, że po wejściu w KATEGORIA A potrzebuje wyświetlić wszystkie produkty, które są w kategoriach poniżej... i tu jest problem..


Przykładowe drzewo kategorii:
  1. KATEGORIA A
  2. PODKATEGORIA-A1
  3. PODKATEGORIA-A2
  4. PODKATEGORIA-AA1
  5. PODKATEGORIA-AA2
  6. PODKATEGORIA-AAA1
  7. PODKATEGORIA-AAAA1
  8. PODKATEGORIA-AAAA2
  9. PODKATEGORIA-AAAA3
  10. PODKATEGORIA-AAAA4
  11. PODKATEGORIA-AAAA5
  12. PODKATEGORIA-AAAA6
  13. PODKATEGORIA-AAA2
  14. PODKATEGORIA-AAA3
  15. PODKATEGORIA-AAA4
  16. PODKATEGORIA-AAA5
  17. PODKATEGORIA-AAA6
  18. PODKATEGORIA-AA3
  19. PODKATEGORIA-AA4
  20. PODKATEGORIA-AA5
  21. PODKATEGORIA-A3
  22. PODKATEGORIA-A4
  23. PODKATEGORIA-A5
  24. KATEGORIA B
  25. PODKATEGORIA-B1
  26. PODKATEGORIA-B2
  27. PODKATEGORIA-B3
  28. PODKATEGORIA-B4
  29. PODKATEGORIA-B5
  30. KATEGORIA C
  31. KATEGORIA D


do tej pory robiłem to tak, że wyświetliłem najpierw ID wszystkich podrzędnych kategorii.. następnie wyświetlałem artykuły, z tymi id:
  1. SELECT * FROM table_artykuly WHERE kat=2 OR kat=5 OR kat=8 OR kat=9.. i tak dalej wszystkie id po kolei


Ten post edytował kukix 11.09.2009, 12:07:24
Go to the top of the page
+Quote Post
pinochet
post 11.09.2009, 14:05:21
Post #2





Grupa: Zarejestrowani
Postów: 120
Pomógł: 12
Dołączył: 9.10.2008
Skąd: Tricity.Rumia()

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


Rozwiązuję to w ten sposób, że tworzę takiego jakby cache tabelę z 2 kolumnami:
  1. CREATE TABLE hieararchy
  2. (
  3. base int,
  4. descendent int,
  5. FOREIGN KEY(base) REFERENCES categories(id),
  6. FOREIGN KEY(descendent) REFERENCES categories(id)
  7. }

aby wyświetlic artykuły robisz wtedy:
  1. SELECT * FROM table_artykuly WHERE kat IN (SELECT descendent FROM hierarchy WHERE base =needed_category)

Takie rozwiązanie oczywiście powoduje redundancje i trzeba pamiętać o aktualizacji "indexu" przy działaniach na kategoriach ale przecież te operacje są bardzo rzadko i tyczy się to tylko tworzenia, edycji oraz kasowania.
Można też bezpośrednio do hierarchy wrzucić ID artykułów.
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 04:09