ďťż

[PHP] Nested trees - określenie poziomu najlepszy sposób

       

Podstrony


telcocafe

W jaki sposób odkryć poziom, w którym znajduje się kategoria?

Poniższy kod pozwala jedynie na przejście niżej bądź wyżej o 1 poziom przy wyświetlaniu każdej kategorii. Tak więc w sytuacji, gdy po kategorii X (która kończy poziom 5) nastąpi kategoria Y (w poziomie 1), skrypt wyświetli ją w poziomie 4.
$depth=0; $last=1; foreach($res as $cat) { #Poziom if($last>$cat['rgt']) { ++$depth; } elseif($depth>0 && $last+2!=$cat['rgt']) { $depth-=ceil(($cat['rgt']-$last)/2); } $last=$cat['rgt']; //Potem już wyświetlenie; $depth = poziom (z funkcją str_repeat) }
Edycja: poprawiłem kod.
Użytkownik Ferrari edytował ten post 04 sierpień 2007, 12:17


zobacz: http://rzseattle.org/docs/mysqltrees/
Implementacja pięknego, prostego w obsłudze, elastycznego i pełnego systemu drzewek w SQL nie jest łatwa :) Wyście drugie - czy na pewno potrzebny jest system drzew np. do menu? niekonieczne. Może zamiast tego dać użytkownikowi możliwość otwartej edycji zawartości menu i/lub zrobić "nakładkę" na zagnieżdżone listy UL/LI?

Powyższy artykuł przedstawia bardzo dobry system drzew, z którym miałem przyjemność pracować we frameworku Arrow do zarządzania katalogiem produktów porównywarki cen :)
Użytkownik Riklaunim edytował ten post 03 sierpień 2007, 22:40
Poprawiłem kod. Najlepiej rozpisać drzewko z liczbami na papierze i wyciągnąć odpowiednie wnioski. :) Najpierw próbowałem zaimplementować IP tree (1.5.8) ze względu na pozornie łatwe sortowanie (np. 1.5.9 vs. 1.5.10 - który pierwszy?). Potem stwierdziłem, że to nie jest najlepsza metoda i też trzeba trochę kombinować.

Metoda Depesza za to toporna przy edycji kategorii (głównie przesuwaniu) oraz sortowaniu. Przeczytałem więcej o sposobie nested trees i postanowiłem go użyć. :) Najtrudniejsze jeszcze przede mną - przenoszenie kategorii. Mam nadzieję, że się uda utworzyć odpowiedni skrypt.

Edycja: Spotkaliście się z gotowymi algorytmami przenoszenia pozycji w "nested trees"?
Użytkownik Ferrari edytował ten post 04 sierpień 2007, 21:49
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.