
Implementacja metody pełnych ścieżek (metoda nr 5 z FAQ pl.comp.bazy-danych).
Depesz bardzo ciekawie wszystko opisał w dwóch artykułach:
(Jeśli linki nie działają, artykuły znajdziesz np. w Google Cache)
Ja zajmę się tym, co potrzebne jest do wykorzystania takiej struktury na stronie, czyli renderowaniem drzewka za pomocą PHP.
Struktura bazy wygląda mniej więcej tak, jak obrazuje:
Algorytm postępowania:
Drzewo w postaci zagnieżdżonych <ul> jest o wiele bardziej przydatne (np. jako menu drzewiaste, drzewo kategorii w sklepie).
Depesz sugerował, aby wyświetlać listę w kolejności rysowania drzewa, czyli posortowaną według ścieżek i otwierać i zamykać <ul> w zależności od głębokości zagnieżdżenia (depth).
Wydaje mi się, że nie jest to najlepszy pomysł, gdyż w takim przypadku trzeba skorzystać z dwóch funkcji createtreepath i getitemlevel, które dodatkowo obciążają bazę.
Tak, czy siak, zobaczmy jak można to zrobić:
Najbardziej przydatny przypadek, to wstawienie drzewka do tablicy rekurencyjnej. Można je potem wyświetlać w dowolny sposób w PHP. Można np. wyświetlić drzewko w postaci listy list używając szablonów PHPTAL i możliwości rekurencyjnego wywoływania makr.
Zalety takiej metody:
Tablica rekurencyjna jest generowana za pomocą referencji, a potem wyświetlana w PHPTAL.
Na koniec jeszcze zestaw przkładowych zapytań SQL (jak przenieść drzewko, jak wybrać gałąź, liść itp.)
Ciekawe? Subskrybuj kanał RSS bo będzie więcej!
?