Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] Drzewo kategorii
Forum PHP.pl > Forum > Przedszkole
Czikusek
Na swojej stronie próbuję wprowadzić kategorie/podkategorie dla artykułów. Mam np. takie coś:

Książki
-- Informatyka
---- Programowanie
---- Bazy danych
-- Motoryzacja
---- Samochody
---- Motory

stworzyłem więc tabele 'cats', a w niej:

`CAT_ID` - AUTO_INCREMENT
`CAT_NAME` - VARCHAR (48)
`CAT_PARENT` - INT(1)
`CAT_PATH` - VARCHAR (48)

Przykładowe uzupełnienie wygląda tak:

1 | Informatyka | 0 | informatyka
2 | Programowanie | 1 | programowanie
3 | Motoryzacja | 0 | motoryzacja
4 | Samochody | 3 | samochody

Gdzie jeśli CAT_PARENT == 0 to oznacza to, że jest to kategoria główna.

Mam jeszcze kategorię 'KSIĄŻKI' a w niej:

KSIAZKA_ID | KSIAZKA_NAZWA | KSIAZKA_CAT | KSIAZKA_OPIS

i przykładowe uzupełnienie:

1 | Programowanie PHP | 2 | Opis
2 | O samochodach | 3 | Opis
3 | Inna o samochodach | 3 | Opis

No i teraz na stronie głównej wyświetlam sobie WSZYSTKIE książki - zwykłe zapytanie SELECT i w pętli while wyświetlam wszystkie książki. Mam też wyświetlone wszystkie kategorie z bazy danych. Po wejściu w kategorie główną (np. Informatyka) wyświetlam (jeśli istnieją) wszystkie podkategorie - działa OK. Pod podkategoriami próbuję zrobić listę WSZYSTKICH książek, które dotyczą kategorii INFORMATYKA, a więc wszystkich podkategorii których rodzicem jest właśnie INFORMATYKA.

Jak powinno wyglądać takie zapytanie? W miarę optymalne żeby było bo tych książek trochę mam, a nie chcę żeby mi muliła strona.

Czytałem o nested set - nie podoba mi się to zupełnie i nie rozumiem tego i nie chcę nawet zrozumieć. Odpada. Czytałem też o drzewach IP, ale też wolałbym jakoś inaczej to zrobić. Na stronie najgłębsze zagęszczenie jest do 3 poziomu więc co będzie najlepszym rozwiązaniem? Najlepiej by było żeby ktoś pomógł mi skonstruować zapytanie do tego powyżej.

Z góry dzięki.
pawel06281990
Proszę tu masz skrypt kategorii

  1. <?php
  2. $msql2 = dbquery("SELECT * FROM ".$db_prefix."category");
  3. while ($categorie_menu = dbarray($msql2)) {
  4.  
  5. echo"<a href='kategoria?przyrostek_categori=".$categorie_menu['przyrostek_categori']."'>".$categorie_menu['nazwa_categori']."</a>";
  6.  
  7. }


Ten skrypt napisałem sam na swojej stronie w przyszłości dodam podkategorie a to są kategorię bez spod jkategorii tylko go przeedytuj i daj swoje kategorie itp
Czikusek
... przeczytaj mój post... ale dzięki za chęci
viking
https://depesz.com/?s=%22drzewa%20w%20sql%22
Czikusek
viking, wolałbym jakieś najprostsze na świecie rozwiązanie... teraz znalazłem takie coś:

... where CAT_ID = IN..

co o tym myślicie?
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.