Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]kategoria i subkategoria
Forum PHP.pl > Forum > Przedszkole
wpaski
Witam, zastanawiam się jak poprawnie wykonać podział na kategorie i subkategorie, mam takie 2 tabele:
tabele wygladaja tak:
  1. CREATE TABLE IF NOT EXISTS `category` (
  2. `category_id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `category_title` varchar(30) COLLATE utf8_polish_ci NOT NULL,
  4. `category_description` varchar(30) COLLATE utf8_polish_ci NOT NULL,
  5. PRIMARY KEY (`category_id`)
  6. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=2 ;
  7.  
  8. CREATE TABLE IF NOT EXISTS `subcategory` (
  9. `subcategory_id` int(11) NOT NULL AUTO_INCREMENT,
  10. `subcategory_title` varchar(30) COLLATE utf8_polish_ci NOT NULL,
  11. `subcategory_description` varchar(30) COLLATE utf8_polish_ci NOT NULL,
  12. `category_id` int(11) UNSIGNED NOT NULL,
  13. PRIMARY KEY (`subcategory_id`),
  14. KEY `category_id` (`category_id`)
  15. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=13 ;
  16.  
  17.  




i zapytanie do nich:
  1. SELECT subcategory.subcategory_title, category.category_title, category.category_id FROM category INNER JOIN subcategory ON category.category_id = subcategory.category_id;



cel jest taki żeby, pobrać kategorię, następnie mają sie pobrać do niej wszystkie subkategorie, potem kolejna kategoria i kolejne subkategorie, tak w kółko aż do ostatniej subkategorii w ostatniej kategorii, z tym, że nie wiem jak dobrze to napisać (prosiłbym o jakieś wskazówki, przykladowy kod), i czy powyższe zapytanie jest optymalne czy można to inaczej zrobić?
wujek2009
Hm. Właściwie można ograniczyć się do jednej tabeli np. "categories" o stukturze:
Kod
| id | name | description | parent_id |


Gdzie kolumna "parent_id" będzie przyjmować albo wartości tekstowe (string) albo wartość NULL - w przypadku gdy jest tylko kategoria główna (czyli kategoria bez podkategorii :-)). Natomiast wartość tekstowa to będzie tekst w stylu "1.23.15" - metoda na IP (gdzie 1 oraz 23 i 15 - to ID kategorii z zaglębienia).

Ogólnie o metodzie drzewek bądź metodzie IP - jak zwał tak zwał możesz poszukać na forum, ponieważ ten wątek został już omówiony tutaj.
Np. http://forum.php.pl/index.php?showtopic=107322 (w pierwszym poście są linki do artykułów)

+ do tego cache, aby za każdym razem nie pobierać całej listy
+ w cache trzymać już posortowane tablice aby w kółko tego samego nie filtrować

i będzie OK.
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.