![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 115 Pomógł: 0 Dołączył: 16.04.2005 Skąd: Białowieża Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Zaszła potrzeba utworzenia tablicy drzewa wielopoziomowego za pomocą jak najmniejszej liczby zapytań. Przykładowa tabela: Kod id parent_id title 1 0 Artykuły 2 1 Na temat 1 3 1 Na temat 2 4 2 Na podtemat 1 5 2 Na podtemat 2 Celem jest utworzenie tablicy o strukturze: Kod Array ( [0] => Array ( ["name"] => "Artykuły" ["items"] => Array ( [0] => Array ( ["name"] => "Na temat 1" ["items"] => Array ( [0] => Array ( ["name"] => "Na podtemat 1" ) [1] => Array ( ["name"] => "Na podtemat 2" ) ) ) [1] => Array ( ["name"] => "Na temat 2" ) ) ) ) Google podaje mi tylko jakieś wielkie klasy, które operują tylko na memberach obiektu, ew. poprzez rekurencję wykonują więcej zapytań SQL. Pytanie: Czy ktoś ma pomysł, jak zbudować takie drzewo z pomocą jednego tylko zapytania, tzn SELECT * FROM categories? -------------------- |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Nieautoryzowani Postów: 92 Pomógł: 15 Dołączył: 21.10.2006 Ostrzeżenie: (0%) ![]() ![]() |
Jesli masz wyswietlic wszystkie galezie drzewa to musisz pobrac cale drzewo (SELECT * FROM categories) i dzialajac rekurencyjnie na otrzymana tablice zbudowac twoja strukture.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 8.10.2007 Skąd: Piekary Śląskie Ostrzeżenie: (0%) ![]() ![]() |
Witam. Sam musiałem sobie poradzić z identycznym problemem kilka dni temu, więc chętnie udzielę pomocy.
Jednorazowy kod można zmieścić w niecałych 30 linijkach, a ubranie go w klasę nie powinno być trudnym zadaniem.
Ten post edytował barman 12.11.2007, 08:11:42 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 984 Pomógł: 41 Dołączył: 16.03.2002 Skąd: Płock Ostrzeżenie: (0%) ![]() ![]() |
-------------------- eh, co polska wódka to polska wódka
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
-------------------- Nie lubię jednorożców.
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 115 Pomógł: 0 Dołączył: 16.04.2005 Skąd: Białowieża Ostrzeżenie: (0%) ![]() ![]() |
Więc kod barmana działa idealnie - wielkie podziękowania
![]()
Jeszcze dla potomności - spłycenie drzewa, czyli przygotowanie danych dla szablonu bez konieczności wywoływania zasobożernej rekurencji w smarty:
-------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 19:47 |