Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Wyświetlenie artykułów z kategorii i podkategorii.. 5 poziomów :/
Forum PHP.pl > Forum > PHP
kukix
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
pinochet
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.