Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL] Drzewo kategorii
Czikusek
post 24.08.2018, 17:56:29
Post #1





Grupa: Zarejestrowani
Postów: 30
Pomógł: 1
Dołączył: 11.07.2018

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


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.
Go to the top of the page
+Quote Post
pawel06281990
post 24.08.2018, 18:17:00
Post #2





Grupa: Zarejestrowani
Postów: 281
Pomógł: 0
Dołączył: 10.01.2014

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


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

Ten post edytował pawel06281990 24.08.2018, 18:17:37
Go to the top of the page
+Quote Post
Czikusek
post 24.08.2018, 18:22:03
Post #3





Grupa: Zarejestrowani
Postów: 30
Pomógł: 1
Dołączył: 11.07.2018

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


... przeczytaj mój post... ale dzięki za chęci
Go to the top of the page
+Quote Post
viking
post 24.08.2018, 18:42:44
Post #4





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


https://depesz.com/?s=%22drzewa%20w%20sql%22


--------------------
Go to the top of the page
+Quote Post
Czikusek
post 24.08.2018, 19:07:24
Post #5





Grupa: Zarejestrowani
Postów: 30
Pomógł: 1
Dołączył: 11.07.2018

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


viking, wolałbym jakieś najprostsze na świecie rozwiązanie... teraz znalazłem takie coś:

... where CAT_ID = IN..

co o tym myślicie?
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: 28.03.2024 - 14:38