Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Drzewo z MySQL metodą trawersji.
sanneo
post
Post #1





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 15.01.2008
Skąd: Warszawa

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


Witam wszystkich

Przeczytałem pewien artykuł http://www.sitepoint.com/article/hierarchical-data-database

Niestety nie opisuje jak poradzić sobie z typową sytuacją wielopoziomowego menu w serwisie.

Mam dane w takim formacie:

-message1
--message11
--message12
-message2
--message21
--message22
---message221
---message222
----message2221
----message2222
-----message22221
-----message22222
----message2223
---message223
-message3
--message31
---message311
---message312
---message313
--message32
-message4
--message41
--message42
-message5
--message51
--message52

Chciałbym wyświetlić tylko to:

-message1
-message2
--message21
--message22
---message221
---message222
----message2221
----message2222
-----message22221
-----message22222
----message2223
---message223
-message3
-message4
-message5

Dlatego, że wybrałem pozycję menu:

-----message22221

Macie jakiś pomysł jak to osiągnąć korzystając ze struktury bazy danych opisanej w artykule?

Z góry dziękuję.

Pozdrawiam.

Mariusz
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Zyx
post
Post #2





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

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


http://artykuly.zyxist.com/czytaj.php/drzewa_w_php_i_mysql <- tu masz artykuł umożliwiający szybkie pobranie danego wycinka drzewa.

Możliwości:
- Szybkie pobieranie fragmentu drzewa od danego węzła do wszystkich jego liści.
- Szybkie pobieranie ścieżki do korzenia.
- Szybkie zliczanie węzłów podrzędnych.

Wady:
- Podczas pobierania fragmentu drzewa nie da się na poziomie bazy zignorować gałęzi drzewa od zadanego węzła w dół.
- Dość skomplikowana implementacja, zwłaszcza przy bardziej zaawansowanych operacjach.
- Nie da się pobrać pojedynczego poziomu drzewa.
- Modyfikacja drzewa wymaga co najmniej kilku zapytań SQL. Stanowczo odradzam implementowanie tego na czymś innym niż InnoDB i transakcjach, bo inaczej kłopoty mamy murowane.

Stosowałem ten algorytm w połączeniu z polem parent_id, którego używałem do wyświetlania pojedynczego poziomu drzewa w administracji i "płaskich" operacji na danym poziomie. Poszukaj dobrze na forum, gdyż był tu swego czasu temat z podaną całą masą różnych implementacji.
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: 15.10.2025 - 01:04