Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL] Drzewko - kategorie
d.stp
post
Post #1





Grupa: Zarejestrowani
Postów: 358
Pomógł: 0
Dołączył: 19.04.2012

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


Robię prosty sklep internetowy i zatrzymałem się na budowie bazy danych bo kurcze nie wiem za bardzo jak rozwiązać problem z kategoriami w sklepie.

Powiedzmy, że mam kilka kategorii:

  1. 1. Telefony
  2. 1.1. Używane
  3. 1.1.1. Działające
  4. 1.1.2. Niedziałające
  5. 1.2. Nowe
  6. 2. Tablety
  7. 2.1. Polskie
  8. 2.2. Chińskie


Coś mniej więcej takiego. Więcej jak 3 poziomy nie powinno być. Teraz zastanawiam się czy takie rozwiązanie jest dobre:

products_categories:
cat_id | cat_parent | cat_name

A w PHP zrobię sobie przy wyświetlaniu:

- sprawdzanie czy w danej kategorii są podkategorie (mysql_num_rows za każdym razem)
- jeśli są to pobiorę wszystkie kategorie o parent_cat = cat_id

Czyli podsumowując do każdego poziomu drzewka zrobiłbym osobne pobieranie kategorii.

Czytałem o tych drzewkach w PHP i MySQL i wyczytałem że ludzie mają właśnie z tym problem bo po stronie mysqla nie ma takiej sztuczki do tego. Wyczytałem też o left i right, ale strasznie te rozwiązanie mi się nie podoba (nie rozumiem go kompletnie).

z góry dzięki za odp
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Forti
post
Post #2





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

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


1. Jak często będziesz zmieniał te kategorie?
2. Jak dużo ich jest?

Generalnie, na drzewach na których ja pracuje (gedmo tree najczęściej) jest to tak:

id | parent | level | name | root


Tak będzie najtwiej. Teraz tak:


  1. 1. Telefony (1, null, 1, telefony, 1)
  2. 1.1. Używane (2, 1, 2, uzywane, 1)
  3. 1.1.1. Działające (3, 2, 3, dzialajce, 1)
  4. 1.1.2. Niedziałające (4, 2, 3, niedzialajce, 1)
  5. 1.2. Nowe (5, 1, 2, nowe, 1)
  6. 2. Tablety (6, null, 1, tablety, 2)
  7. 2.1. Polskie (7, 6, 2, polskie, 2)
  8. 2.2. Chińskie (8, 6, 2, chinskie, 2)



W ten sposób możesz:

- pobrać wszystkie liście (dzieci) danej kategorii (parent == ?)
- sprawdzic czy dana kategoria jest kat. główna (parent == null)
- pobrać tylko jedną kategorie główna z dziecmi (root == ?)
- bardzo łątwo całość modyfikować

Może nie napisałęm tego najczytelniej, ale tak to sie mniej więcej robi (IMG:style_emoticons/default/wink.gif)



edit:

to co podał !*!, to left - right system (tak ja to nazywam). Przydaje mi się gdy pracuje na drzewie z 1800 kategorii i 6 poziomami.

Ten post edytował Forti 2.02.2015, 15:09:54
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 24.12.2025 - 13:26