![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 50 Pomógł: 0 Dołączył: 11.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam programistów
![]() Probuje znalezc rozwiazane na nastepujacy problem. Mam tabela z lista grup. W tablicy jest kolumna parent odpowiedzialna za tworzenie podgrup: grupy_id | grupy_parent | grupy_nazwa 1 | 0 | Produkty 2 | 0 | Przetwory 3 | 0 | Odpady 4 | 1 | Owoce 5 | 1 | Warzywa 6 | 4 | Gruszki 7 | 4 | Mango 8 | 5 | Banany 9 | 8 | Świeże 10 | 8 | Stare 11 | 2 | Mleczne Z wypisaniem struktury grup nie mam problemu. Nazwa grupy [grupy_id] - Produkty [1] ----Owoce [4] ------------Gruszki [6] ------------Mango [7] ------------Banany [8] ------------------------Świeże [9] ------------------------Stare [10] ----Warzywa [5] - Przetwory [2] ----Mleczne [11] - Odpady [3] Niestety nie wiem jak wypisac krok po kroku, a raczej klikniecie po kliknieciu pewnej struktury tabeli. Dokladnie chcialbym wykonac cos takiego, aby na podstawie zmiennej $group rozwilal grupe i jej podrupy. Sprawdzal od konca czy w podanym id istnieja podrupy. Jesli tak to je wypisuje. 1. Pierwszy widok (klikam w Produkty - index.php?group=1) - Produkty [1] - Przetwory [2] - Odpady [3] 2. Drugi widok (klikam w Owoce - index.php?group=4) - Produkty [1] ----Owoce [4] - Przetwory [2] - Odpady [3] 3. Trzeci widok (klikam w Banany - index.php?group=8) - Produkty [1] ----Owoce [4] ------------Gruszki [6] ------------Mango [7] ------------Banany [8] - Przetwory [2] - Odpady [3] 4. Czwarty widok. Ostatni poziom zagnieżdżenia w tym przykladzie. (klikam w Przetwory - index.php?group=2) - Produkty [1] ----Owoce [4] ------------Gruszki [6] ------------Mango [7] ------------Banany [8] ------------------------Świeże [9] ------------------------Stare [10] - Przetwory [2] - Odpady [3] 5. Piaty widok. Zwija sie poprzednia lista, rozwija kolejna - Produkty [1] - Przetwory [2] ----Mleczne [11] - Odpady [3] Chodzi o stopniowe rozwijanie menu przesyłając parametr grupy_id. Jezeli wybrany rekord ma podgrupy to go rozwija z zapamiętaniem poprzedniego rozwinięcia w gałęzi. Strona ma sie przeładowywać. Prosze o wskazowki w jaki sposob mozna to zaprojektowac. Za kazda nawet najmniejsza pomoc bede wdzieczny. Ten post edytował luckyluc 14.08.2008, 01:46:30 |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 202 Pomógł: 117 Dołączył: 13.04.2007 Skąd: 127.0.0.1 Ostrzeżenie: (0%) ![]() ![]() |
Skorzystaj z Treeview (wtyczka do jquery). Generujesz sobie zwykłą listę (HTML), a plugin robi całą robotę. W tym rozwiązaniu generujesz od razu całość drzewa.
Tu masz demka: http://jquery.bassistance.de/treeview/demo/ Pozdrawiam! -------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 50 Pomógł: 0 Dołączył: 11.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
Dzieki za opowiedz. Przeanalizowałem Treeview i wszystko by pasowalo gdyby nie to, ze przy zmianie danych w linku menu sie zwija. Potrzebuje skryptu, ktory budowalby menu na podstawie zmiennej $group przesylanej w linku. Zmienna porownywana bylaby z polem grupy_id w bazie.
Link 1 index.php?show=produkty&group=9 - Produkty ----Owoce ------------Gruszki ------------Mango ------------Banany ------------------------Świeże ------------------------Stare - Przetwory - Odpady Link 2 index.php?show=produkty_opis&group=9&s=3 - Produkty ----Owoce ------------Gruszki ------------Mango ------------Banany ------------------------Świeże ------------------------Stare - Przetwory - Odpady Czy mozna to zrobic za pomoca warunkow i petli ? Ten post edytował luckyluc 12.08.2008, 16:47:21 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 202 Pomógł: 117 Dołączył: 13.04.2007 Skąd: 127.0.0.1 Ostrzeżenie: (0%) ![]() ![]() |
Nie rozumiem. Jeżeli chcesz, żeby się nie zwijało to masz: {presist: cookie} czy jakoś tak i będzie pamiętało swój "stan". Nie wiem czy o to chodzi.
Pozdrawiam! -------------------- |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 9.01.2007 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Kiedyś coś takiego robiłem, w sumie sporo zależy od tego, czy masz dużo tych kategorii czy niewiele - od tego zależy jak skonstruować wyciąganie ich z bazy. Moje rozwiązanie raczej jest dalekie od optymalnego, ale może wywiąże się z tego jakaś ciekawa dyskusja
![]() Dla niedużej liczby kategorii można zrobić coś takiego (ogólna wizja)
Funkcją addWithSons która przejeżdża po wszystkich elementach sprawdzam czy $iCategoryId (odpowiednik Twojego $_GET['group']) jest synem albo ojcem aktualnie iterowanego elementu ($id); czyli tak naprawdę addWithSons dodaje synów tylko czasami. generalnie przydałaby się kolumna w bazie która przechowuje ścieżkę (najlepiej po id, np id=1 -> Produkty.. id=20 -> Owoce, id=65 ->Gruszki to gruszki->path = /1/20/ ). Tu można zrobić dwie wersje, albo wyciągać z bazy do php wszystko (sprawdzanie ojca/syna np. substringami na podstawie ścieżki), albo już przy SQL filtrować za pomocą LIKE%. Jeśli sprawdzenie (jest synem / ojcem) powiedzie się to w środku rekurencyjnie jeszcze raz wywołuję addWithSons na obecnym elemencie. No i przy dodawaniu nowego elementu do kontenera (tablicy) trzeba jakoś zaznaczyć poziom zagłębienia, np. ustawić $element->name, $element->href, $element->level (element->level można na podstawie liczby separatorów w ścieżce) i później robić odpowiednie wcięcia czy co tam chcesz. Ten post edytował qBK 12.08.2008, 22:13:36 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 15.07.2025 - 22:22 |