luq techblog

o tworzeniu słów kilka…

Drzewa – prosta obsługa w PHP 17 marca 2010

Filed under: PHP,Programowanie — Łukasz @ 23:02
Tags: , ,

Dziś przedstawię klasę, którą napisałem do obsługi grafu drzewiastego. Pomysł na wpis zrodził się w chwili modyfikacji pewnego skryptu, w, którym zlecono mi kilka modyfikacji, jedną z nich było dopisanie wyświetlenie struktury drzewiastej kategorii pobranych z bazy… Jak wiadomo, jest mnóstwo sposobów na przedstawienie drzewa z relacyjnych bazach danych, więcej o tym można poczytać tutaj. Ja jednak spotkałem się już z gotową bazą która wykorzystywała drugą metodę opisaną na powyższej stronie, tzn.
Tabelka z kategoriami zbudowana była z kilku pól, ale dla mnie były ważne 3 z nich (nazwy dla ułatwienia pozmieniałem):

id | parent | name

Jak nie trudno się domyśleć, id to unikatowy identyfikator, parent to id rodzica natomiast name to nazwa kategorii.

Przed moją modyfikacją, na stronie były podane tylko kategorie główne, czyli takie które miały parent = 0. Czyli zapytanie wyglądało tak:

SELECT id, name FROM category WHERE parent = 0

A więc ja wyrzuciłem z niego przeszkadzający mi warunek + dodałem sortowanie po id (nie sortowałem już drugi raz wyników, zresztą w tej modyfikacji, nie użyłem tej klasy, wszystko było napisane strukturalnie a więc po co tam tą klasę upychać…) i pobrałem do tablicy pełną tabelkę z kategoriami, natomiast po stronie PHP zadbałem o to aby przekształcić tą tablicę tak aby była prosta możliwość jej wyświetlenia w sposób:

- Kategoria 1
     - Kategoria 1.1
          - Kategoria 1.1.1
          - Kategoria 1.1.2
     - Kategoria 1.2
- Kategoria 2
(...)

Oczywiście rozwiązanie rekurencyjne, którego nie będę tłumaczył krok po kroku bo wiele cierpliwości by mnie to kosztowało… Pokaże jedynie obsługę tego ustrojstwa, kod odpowiedzialny za to, jak i rzucę na końcu całą klasę do ściągnięcia wraz z przykładem.

 
(more…)

Reklamy