Witaj, Gościu O nas | Kontakt | Mapa
Wortal Forum PHPEdia.pl Planeta Kubek IRC Przetestuj się!

Drzewka w PHP

Wstęp

Każdemu programiście przychodzi kiedyś zmierzyć się z problemem drzewek. Jeśli nie pojawiają się one w kategoriach produktów, artykułów to są potrzebne do stworzenia systemu uprawnień opartego na grupach, stworzenia drzewa tematycznego czy nawigacyjnego. Większość ludzi zabierając się do tego problemu myśli "trochę kodowania i na pewno poradzę sobie z tym zadaniem raczej bez większych problemów". Muszę przyznać ze zaliczałem się do tej grupy. Zostałem jednak bardzo szybko sprowadzony na ziemie.

Na początku wydawało mi się ze każdej wartości wystarczy przypisać id rodzica a wszystko pójdzie później jak po maśle. Pomysł tylko złudnie kusił przejrzystością oraz brakiem redundancji danych. W rzeczywistości był koszmarem programistycznym. Aby uzyskać jakiekolwiek dane o strukturze drzewa trzeba było stosować pętle wciąż pytające o nowy poziom zagnieżdżenia. Pętle te proste przy uzyskiwaniu informacji o tym, kto jest rodzicem, dla kogo i kto jest czyim dzieckiem praktycznie nie nadawały się do wyświetlania danych. Dopisywały one do tablicy znalezione pokrewne wartości jednak nie były w stanie ich uporządkować. Wtedy zrozumiałem, że tworzenie systemu obsługującego drzewka wymaga starannego planowania od podstaw. Jeśli próbujesz rozwiązywać problemy na bieżąco, w miarę pojawiania się, to jesteś skazany na niepowodzenie. Zacząłem więc od początku. Nie mogąc ustalić jasnych założeń jak miałaby wyglądać implementacja drzewek na bazie danych zacząłem szukać. Przejrzałem wiele różnych sposobów na uzyskanie struktury drzewiastej. Niektóre były podobne do moich wcześniejszych prób, niektóre zupełnie inne. W końcu ustawiłem priorytet mojego "wyszukiwania" na łatwe porządkowanie drzewa. Podpowiedz uzyskałem jak zwykle na forum (thx. orson). Podpowiedź obejmowała segregowanie drzewek dzięki kolumnie decimal w bazie danych oraz wskazanie formatu dla tej kolumny. Dalej poszedłem sam. Chciałem stworzyć klasę, która ma swoje ograniczenia, ale w zamian za to jest szybka i banalnie prosta w użyciu.

Co do samego artykułu to są dwie zasady o których warto wspomnieć. Pierwszą z nich jest to, że nazywam kolejne dzieci i rodziców "wartościami", jest to powodowane tym, że tak naprawdę zastosowań drzewek jest wiele i jest to najbardziej ogólna nazwa dla rodzica i dziecka jednocześnie jaka udało mi się wymyślić. Drugą z nich jest oznaczanie wartości które musimy uzupełnić w zapytaniach SQL danymi zewnętrznymi przez [*zmienna*].

A wiec bierzemy się do roboty.

Informacje na podobny temat:
Wasze opinie
Wszystkie opinie użytkowników: (2)
Drzewa danych w PHP
Środa 18 Kwiecień 2007 1:21:42 am - blackoak <krzysztof_at_blackoak.com.pl>

Zagadnienie związane z drzewami danych jest opisane całkiem dokładnie pod adresem:
http://skrypteria.pl/index.php?p=productsMore&iProduct=155&sName=Programowanie-PHP-i-MySql-::-Drzewa-danych

Jeśli kogoś interesuje ten temat, to warto przeczytać.

moje drzewka
Piątek 03 Listopad 2006 2:19:30 pm - jimmy0699 <jimmy0699_at_gmail.com>

witam. udalo mi sie zrobic moim zdaniem lepsze drzewka. po pierwsze nie maja ograniczenia. po drugie sa chyba troche proscie napisane, calosc miesci sie w 220 linijkach i w jednej bazie danych.
jak znajde wiecej czasu to napisze o tym artykol

Mentax.pl    NQ.pl- serwery z dodatkiem świętego spokoju...   
O nas | Kontakt | Mapa serwisu
Copyright (c) 2003-2024 php.pl    Wszystkie prawa zastrzeżone    Powered by eZ publish Content Management System eZ publish Content Management System