![]() |
![]() |
![]()
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 |
|
|
![]() |
![]()
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. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.10.2025 - 01:04 |