![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 663 Pomógł: 6 Dołączył: 3.06.2007 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Ostatnio siedziałem sporo nad utworzeniem struktury kategorii na stronie. Istnieje fajna metoda opisana tutaj - klik. Osobiście ma dla mnie to taką wadę, że nie mamy swobody przy przenoszeniu lub zamienianiu dowolnych gałęzi w drzewie. W mojej metodzie wykorzystuję uproszczoną strukturę bazy.
Ma to spore zalety. Najtrudniejsze jest jednak np. Usuwanie całej gałęzi. Moze się komuś przyda. Proszę też o jakieś komentarze. Dzięki kolejce FIFO pozbyłem się rekurencji. Ograniczyłem też ilość zapytań do bazy do liczby węzłów zawierających dzieci. Tak więc jeśli mamy np kategorie które zawierają dużą ilość artykułów ( Zazwyczaj tak jest, że mamy o wiele mniej kategorii niż artykułów ) to jest to całkiem wydajna metoda. Udało mi się zaimplementować taki algorytm: (Testowałem i działa) ![]()
Można to jeszcze udoskonalić tak aby pozbyć się końcówki. Wystarczy w zapytaniu do bazy wstawić jedno 'or'. Nie będzie wtedy trzeba pamiętać o 2 różnych miejscach usuwania wpisu:
Ten post edytował Black-Berry 9.02.2008, 12:07:00 -------------------- http://www.berry.nazwa.pl/edico/public_html/index.php ----> under construction
|
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 50 Pomógł: 6 Dołączył: 15.06.2006 Ostrzeżenie: (0%) ![]() ![]() |
Może byś pokazał te klasę najpierw?
![]() |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 663 Pomógł: 6 Dołączył: 3.06.2007 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Nie mam klasy do drzewa. To tylko kod który można sobie dostosować. Jeśli jednak chodzi o klasę kolejki FIFO to standard dlatego nie zamieszczałem jej tutaj. Ale skoro prosisz to proszę:
Nie ukrywam, że klasy tej nie pisałem sam ale ściągnąłem z neta. W przyszłości postaram się jeszcze zamieścić moje metody do tworzenia rozwijanego menu z tego drzewa ale to już bajka bo usuwanie gałęzi jest najtrudniejsze jeśli nie stosujemy w bazie pól lft, right (patrz artykuł z 1 postu). Usuwanie węzła przy takiej strukturze bazy to kwestia usunięcia rekordu, a dodawanie polega na podaniu 'parenta' więc nie ma sensu o tym pisać. Pozdrawiam i czekam na dalsze opinie. -------------------- http://www.berry.nazwa.pl/edico/public_html/index.php ----> under construction
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 31.07.2025 - 09:22 |