Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Drzewka w PHP/SQL
Forum PHP.pl > Forum > PHP
ladovnik
Witaj. Przeczytałem na stronie http://depesz.com/various/various-sqltrees.php opis, jak robić system kategorii z nielimitowaną ilością podkategorii, chodzi mi o Metodę 2.

Generalnie ją rozumiem i bez problemu przy jej pomocy zrobiłem skrypt downloadu, pozwalający na nielimitowaną ilość podkategorii. Z wyświetlaniem nie było problemu, za to problem się pojawia przy tworzeniu drzewa kategorii.
Otóż w Panelu Admina przy dodawaniu pliku do downlaodu należy wybrać do jakiej kategorii ma zostać dodany plik - w tym celu chciałbym wyświetlić drzewo w formie:

Kod
Kategoria 1
-- Podkategoria 1
-- Podkategoria 2
-- -- Podkategoria 1
-- -- Podkategoria 2
-- -- Podkategoria 3
Kategoria 2
-- Podkategoria 1
-- -- Podkategoria 1
-- -- -- Podkategoria 1
-- -- -- Podkategoria 2
-- -- Podkategoria 2
-- Podkategoria 2
-- -- Podkategoria 1


Oczywiście drzewko powinno generować się dla nielimitowanej ilości zagłębień. I w tym problem - gdybym widział ile ma być zagłębień, to nie problem zrobić takie drzewko, napisać kod dla np. trzech zagłębień i już. A tutaj trzeba zrobić tak, aby niezależnie od liczby zagłębień drzewko sie generowało. Czy ma ktoś pomysł, jak to zrobić?

Pozdrawiam,
ladovnik
erix
Cytat
Oczywiście drzewko powinno generować się dla nielimitowanej ilości zagłębień. I w tym problem - gdybym widział ile ma być zagłębień, to nie problem zrobić takie drzewko, napisać kod dla np. trzech zagłębień i już. A tutaj trzeba zrobić tak, aby niezależnie od liczby zagłębień drzewko sie generowało. Czy ma ktoś pomysł, jak to zrobić?

Rekurencyjnie. ALE: jest to struktura mało wydajna, gdyż nowe zagłębienie = kolejne zapytanie.

Poszukaj drzewka bazującego na kolejności + stopnia zagłębienia. Nie jest może takie łatwe w manipulacji, ale jesteś w stanie całe drzewko wygenerować przy pomocy jednego zapytania.
ladovnik
Tak, wiem. Ale ten skrypt będzie używany tak, że oprócz niego nic innego nie generuje zapytań. A kategorie pewnie będą miały strukturę podobną do tej:
Kod
Windows
-- Programy
-- -- Edukacyjne
-- -- Biurowe
-- Gry
-- -- Wyścigowe
-- -- Strategiczne
Linux
-- Programy
-- -- Edukacyjne
-- -- Biurowe
-- Gry
-- -- Wyścigowe
-- -- Strategiczne

Czyli nie będą przekraczać trzeciego stopnia zagłębienia. Na dodatek to kompletne drzewko kategorii będzie wyświetlane jedynie w PA, a admin nie wchodzi codziennie na stronę, żeby dodać kilkadziesiąt kategorii, także częstotliwość skorzystania z wyświetlenia tego drzewka będzie bardzo mała, zatem można zaryzykować małą niewydajność...

Gdyby tak ktoś mógł mi przybliżyć trochę, co i jak z tą rekurencją w moim przypadku, byłbym bardzo wdzięczny.
erix
Cytat
Czyli nie będą przekraczać trzeciego stopnia zagłębienia. Na dodatek to kompletne drzewko kategorii będzie wyświetlane jedynie w PA, a admin nie wchodzi codziennie na stronę, żeby dodać kilkadziesiąt kategorii, także częstotliwość skorzystania z wyświetlenia tego drzewka będzie bardzo mała, zatem można zaryzykować małą niewydajność...

Twojego podejścia pochwalić nie można, ale skoro się upierasz...

Robisz metodę do wyciągania np. getItems($cat), a ona wyciąga wszystko z danej kategorii. I potem to, co zwróci przelatujesz pętlą i znowu wywołujesz dla każdej z nich getItems, i tak dalej...
z3L
Ja polecam skorzystać z drzewka depesza.
elmozaur
racja.
Zakladajac, ze liczba kategorii i podkategorii jest skonczona spokojnie mozna uzyc
drzewka depesza -> metoda nr2 + modyfikacja informacji o glebokosci.

Ja to stosuje do graficznej modyfikacji struktur 5 poziomowych i sprawdza sie swietnie
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.