![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 437 Pomógł: 42 Dołączył: 16.04.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
mam taką strukturę bazy:
oraz funkcje PHP
a dzięki temu mogę wygenerować taką oto strukturę: Kod Array ( [1] => Array ( [id] => 1 [parent] => 0 [alias] => produkty [title] => Produkty [icon] => [cid] => 0 [children] => Array ( [2] => Array ( [id] => 2 [parent] => 1 [alias] => baterie [title] => Baterie [icon] => baterie.png [cid] => 0 [children] => Array ( [4] => Array ( [id] => 4 [parent] => 2 [alias] => [title] => Baterie wannowo - prysznicowe [icon] => [cid] => 0 [level] => 2 ) [5] => Array ( [id] => 5 [parent] => 2 [alias] => [title] => Baterie kuchenne [icon] => [cid] => 0 [level] => 2 ) [6] => Array ( [id] => 6 [parent] => 2 [alias] => [title] => Baterie prysznicowe [icon] => [cid] => 0 [level] => 2 ) [7] => Array ( [id] => 7 [parent] => 2 [alias] => [title] => Zestawy baterii [icon] => [cid] => 0 [level] => 2 ) [8] => Array ( [id] => 8 [parent] => 2 [alias] => [title] => Baterie wannowo - prysznicowe podtynkowe [icon] => [cid] => 0 [level] => 2 ) [17] => Array ( [id] => 17 [parent] => 2 [alias] => zawory-katowe [title] => Zawory kątowe [icon] => [cid] => 0 [level] => 2 ) ) [level] => 1 ) [18] => Array ( [id] => 18 [parent] => 1 [alias] => sedesy [title] => Sedesy [icon] => [cid] => 0 [level] => 1 ) [10] => Array ( [id] => 10 [parent] => 1 [alias] => bidety [title] => Bidety [icon] => [cid] => 0 [children] => Array ( [11] => Array ( [id] => 11 [parent] => 10 [alias] => bidety2 [title] => Bidety [icon] => [cid] => 0 [level] => 2 ) [12] => Array ( [id] => 12 [parent] => 10 [alias] => deski-bidetowe [title] => Deski bidetowe [icon] => [cid] => 0 [level] => 2 ) [13] => Array ( [id] => 13 [parent] => 10 [alias] => baterie-bidetowe [title] => Baterie bidetowe [icon] => [cid] => 0 [level] => 2 ) [14] => Array ( [id] => 14 [parent] => 10 [alias] => syfony-do-bidetow [title] => Syfony do bidetów [icon] => [cid] => 0 [level] => 2 ) [15] => Array ( [id] => 15 [parent] => 10 [alias] => syfony-do-bidetow2 [title] => Syfony do bidetów [icon] => [cid] => 0 [level] => 2 ) ) [level] => 1 ) ) [level] => 0 ) ) i chciałbym się dowiedzieć w jaki sposób mogę pobrać kategorię tylko z gałęzi "Bidety"? Jakiś pomysł? Słyszałem o "The Nested Set" jednak mam za mało czasu na zapoznanie się i przerobieniu tego. Przy następnym projekcie już zastosuje ten nowy model. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 590 Pomógł: 107 Dołączył: 25.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
Przy takim drzewie wygląda mi na to, że to nie problem.
Zapytanie do bazy:
i dostaniesz id i parent, w takim układzie ze zwróconej przez Twoją funkcję tablicy (załóżmy że pod zmienną $artykuly) wybierasz odpowiednie poddrzewo, czyli np. $artykuly[$parent][$id] (zmienne z odpowiednich pól rezultatu z bazy). WADY: 1. nadmiarowe odwołanie do SQL 2. zadziała tylko przy pierwszym poziomie zagnieżdżenia Jeśli nie chcesz w taki sposób - musisz przetworzyć indeksy tablicy w PHP. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 437 Pomógł: 42 Dołączył: 16.04.2007 Ostrzeżenie: (0%) ![]() ![]() |
sposób odpada. Chce pracować tylko na tablicy bez zapytań w pętli. O takim rozwiązaniu akurat wiem.
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 590 Pomógł: 107 Dołączył: 25.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
No to jeśli nie pomoże array_search, to zostaje tylko rekurencyjne przeszukiwanie tablicy...
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 437 Pomógł: 42 Dołączył: 16.04.2007 Ostrzeżenie: (0%) ![]() ![]() |
a ktoś ma jakiś pomysł?
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 872 Pomógł: 94 Dołączył: 31.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
Nie chcesz korzystac z bazy, ale z nested set (ktory dziala na bazie) juz tak. Proponuje sie zdecydowac. Majac gotowy modul do obslugi nested sets to jest chwila. Jak bedziesz chcial to zaimplementujesz nested sets szybko, w sieci jest masa gotowcow, wystarczy sciagnac klase i dodac 2 kolumny do tabeli.
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 437 Pomógł: 42 Dołączył: 16.04.2007 Ostrzeżenie: (0%) ![]() ![]() |
jest różnica między 1-3 zapytaniami niż pętlą zapytań pobierająca po kolei podkategorie
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 702 Pomógł: 65 Dołączył: 16.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
Lepszym rozwiązaniem jest drzewo kategorii left/right
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 17:00 |