TAAT Technologie Cyfrowe

Drzewka w SQL i PHP

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:

Wyświetlanie drzewek

Algorytm postępowania:

  1. Wybrać z bazy nadrzędne elementy dla wskazanego ID
  2. Posortować wg. ścieżki
  3. Wyświetlić w pętli jeden za drugim

Lista list

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ć:

Tablica rekurencyjna

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.

Przykłady

Na koniec jeszcze zestaw przkładowych zapytań SQL (jak przenieść drzewko, jak wybrać gałąź, liść itp.)

Nawigacja

Ciekawe? Subskrybuj kanał RSS bo będzie więcej!

RSS ?