![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 0 Dołączył: 27.01.2005 Skąd: Copa Cabana Ostrzeżenie: (0%) ![]() ![]() |
Chcę zrobić katalog. Mam taką tabelę:
ID|Nazwa|Parent Parent wskazuje na kategorię nadrzędną. 0 oznacza że kategoria jest kategorią główną. Ładnie wyświetla mi kategorie główne, podkategorie i linki w kategoriach. Nie umiem zrobić, żeby wyświetlał ścieżkę w postaci: Główna/Kategoria1/Kategoria2/Kategoria3 itd. Do wyświetlania kategorii stosuje taki kod:
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 548 Pomógł: 2 Dołączył: 19.07.2003 Ostrzeżenie: (0%) ![]() ![]() |
witam ...
musisz to zrobić rekurencyjnie ... tworzysz funkcjie która pobiera za każdym razem nazwę parenta do czasu kiedy parent wynosi 0 ... coś takiego:
i jak funkcjia skończy to masz ładnego arraya z kolejnymi kategoriami ... całkowicie z głowy (nie chce mi się szukać na hd) ... to jest zarys ogólny ale taka jest koncepcja ... pozdrawiam |
|
|
![]()
Post
#3
|
|
Grupa: Przyjaciele php.pl Postów: 1 224 Pomógł: 40 Dołączył: 6.07.2004 Skąd: Wuppertal Ostrzeżenie: (0%) ![]() ![]() |
rekurencyjnie jest wolno.
[url]http://www.sitepoint.com/article/hierarchical-data-database[url] |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 548 Pomógł: 2 Dołączył: 19.07.2003 Ostrzeżenie: (0%) ![]() ![]() |
witam ...
dlaczego wolno (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) moje rozwiązanie jest podstawowym (rozwiązanie typowe dla rekurencyjnego pobierania danych - nie do problemu drzew jako takich, żeby nie było, że jest idealne)... zapytania sql zamieniasz na metodę która z pobranej w konstruktorze jednym zapytaniem zawartości drzewa (bez struktury - tylko id, parentid i może name) przechowywanej w klasie w prostym forze pobiera dzieci ... i już ... bardzo wydajna klasa która ma duże możliwości, jest łatwa do napisania i rozwijania a dane przechowywane są w przejrzysty sposób (można dodawać/ zmieniać dane z "palca") ... pozdrawiam |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 23:45 |