![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 98 Pomógł: 1 Dołączył: 7.08.2005 Skąd: Górny Śląsk Ostrzeżenie: (0%) ![]() ![]() |
Potrzebuję zrobić menu kategorii i podkategorii wyciąganych z bazy danych o strukturze
id_menu | nazwa | rodzic id_menu - wiadomo nazwa - wiadomo rodzic - id_menu rodzica Napisałem, działa i jest OK. Ale są na sztywno zaimplementowane 3 poziomy. Więc mam pytanie jak to napisać, żeby dynamicznie sam wyświetlał wszystkie menu i podmenu? Nawet w przypadku, kiedy będzie 20 podmenu? Efekt jaki chcę osiągnąć: 1 -1.1 -1.2 -1.3 --1.3.1 --1.3.2 --1.3.3 -1.4 2 -2.1 -2.2 3 4 5 -5.1 -5.2 Ale podmenu dopiero widoczne po kliknięciu. Wersja online znajduje się pod adresem www.iseasy.pl/menu.php A oto kod pisany "na sztywno".
Liczę na pomoc w rozwiązaniu tego problemu. -------------------- tutoriale
|
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Rekurencja to słowo klucz. Piszesz funkcję, która pobiera wszystkie podkategorie (1 poziom) należące do rodzica, czyli WHERE rodzic=$x. Główne kategorie powinny mieć rodzica ustawionego na NULL czyli startujesz od WHERE rodzic IS NULL. Następnie przelatujesz wybrane rekordy i wywołujesz rekurencyjnie funkcję jeszcze raz, tym razem jako parametr podając rodzica aktualnie iterowanego elementu. To w zasadzie tyle. DO tego odpowiednie umiejscowienie <ul> oraz <li> i osiągniecz oczekiwany efekt. Powodzenia!
PS: takie menu jak zaprezentowałeś w linku lepiej zrobić w JS wykorzystując kod wygenerowany przez PHP (na podstawie pomysłu podanego powyżej). Ten post edytował phpion 3.07.2008, 20:16:58 |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 98 Pomógł: 1 Dołączył: 7.08.2005 Skąd: Górny Śląsk Ostrzeżenie: (0%) ![]() ![]() |
Nie, musi być na PHP.
A coś więcej? jakiś przykład? -------------------- tutoriale
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Nie jesteś w stanie napisać funkcji, która wyszukuje rekordy o konkretnej wartości rodzica? Nie jesteś w stanie wywołać funkcji jeszcze raz z wnętrza samej siebie? No bez przesady, kombinuj.
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 98 Pomógł: 1 Dołączył: 7.08.2005 Skąd: Górny Śląsk Ostrzeżenie: (0%) ![]() ![]() |
Coś w tym kierunku? Niestety nie spełnia oczekiwanej funkcjonalności... -------------------- tutoriale
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 399 Pomógł: 7 Dołączył: 11.06.2007 Skąd: Poznan Ostrzeżenie: (20%) ![]() ![]() |
rekrutacją
funkcja wywałana w funckji z jakimś ogranicznikiem |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 113 Pomógł: 5 Dołączył: 12.09.2006 Skąd: Pruszków/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Dla szybkosci generowania takiego menu unikalbym rekurencji z ponownie wywolywanym zapytaniem do bazy - wystarczy, ze masz 5 poziomow i juz zaczyna sie to przycinac. Nie lepij po prostu wrzucic zapytanie do bazy i zrobic ORDER na id_rodzica
![]() -------------------- "Człowiek dążący do swego celu może być skuteczny tylko w przypadku, jeśli każdą minutę swego życia wykorzysta z maksymalną korzyścią dla osiągnięcia zaplanowanego celu. Jeśli stworzył dla siebie system kar i karze sam siebie za każdą zmarnowaną minutę. Człowiekowi w zupełności wystarczą 3-4 godziny snu, cały pozostały czas może być wykorzystany dla osiągnięcia upragnionego celu." -- Wiktor Suworow
Java devBlog KulturalnyChlebik |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 98 Pomógł: 1 Dołączył: 7.08.2005 Skąd: Górny Śląsk Ostrzeżenie: (0%) ![]() ![]() |
Więc można prosić o przykłady?
-------------------- tutoriale
|
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 77 Pomógł: 27 Dołączył: 24.03.2002 Skąd: Tarnów Ostrzeżenie: (0%) ![]() ![]() |
http://kapelak.pl/2008/04/04/drzewa-w-mysql/
http://dev.mysql.com/tech-resources/articl...hical-data.html Poczytaj, może naprowadzi Cię na nieco ciekawsze rozwiązanie. -------------------- Zbyszek 'antyqjon' Siciarz
siciarz.net | Aquila DSP C++ |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 98 Pomógł: 1 Dołączył: 7.08.2005 Skąd: Górny Śląsk Ostrzeżenie: (0%) ![]() ![]() |
Wszystko przeglądałem, i wszystko jest takie same.
Wypisywanie struktury bez możliwości klikania i przekazywania parametrów co ma zostać rozwinięte.
Napisałem taką funkcję, ale nie wy wyświetla tego tak jak chcę. Wiec jak to napisac, żeby było dobrze? Czy ktoś mi pomoże? -------------------- tutoriale
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 161 Pomógł: 9 Dołączył: 14.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Jeszcze aktualne?
też się z tym męczyłem udało mi się osiągnąć taki efekt: http://195.205.202.32:6893/Szablon/index.php?id=home O to chodziło? Zrobiłem to takim kodem:
i
-------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 1.05.2025 - 04:19 |