Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dynamiczne menu z zagłębieniami
Forum PHP.pl > Forum > PHP
Hudini5
Witam,
jak w temacie potrzebuje zrobić menu które będzie generowane z bazy danych. Menu będzie zawierało KATEGORIE, PODKATEGORIE, LINK
kategorie można dodać z panelu(panel mam zrobiony) podkategorie można również dodać z panelu do konkretnej kategorii i zostaje link, który również będzie dodawany z panelu do konkretnej podkategorii. No i pytanie jak ma wyglądać struktura tabeli(lub tabel, już zrobiłem swoją tabele ale raczej na pewno jest zła ;p), i co najważniejsze jak wygenerować menu na podstawie danych z bazy czyli wyświetlić listę kategorii w każdej kategorii odpowiadające jej podkategorie i w podkategoriach przypisane do niej linki? takie pozagniezdzane menu już mam to sobie HTML wstukam do tego tylko pomóżcie mi w wygenerowaniu czystego tekstu w strukturze jaką opisałem. Bede bardzo wdzięczny za pomoc od wczoraj na tym siedzę i nic.
thomas2411
Może tak:

KATEGORIE:
id
nazwa
parent_id
link

I teraz dodajesz tam kategorie i podkategorie, gdzie w przypadku podkategorii w parent_id wstawiasz ID kategorii. Wtedy może robić dowolne drzewko kategorii. Tam gdzie trzeba wrzucasz link.

Menu generujesz tak, że pobierasz kategorie a potem rekurencyjnie szukasz czy dana kategoria ma takie wpisy, które mają parent_id równy id tej kategorii.

Drugi sposób to rozbić kategorie i podkategorie na dwie tabele i działać miedzy nimi. Czyli pobrać kategorie, a dla danej kategorii w pętli wyszukać w podkategoriach odp wpisy. Ja wolę 1 rozwiązanie
Hudini5
No właśnie coś wyczytałem gdzieś w sieci o rekurencji ale nigdy tego nie stosowałem mógłbyś mi to troszkę przybliżyć na jakimś prostym przykładzie.
erix
Google: mysql drzewka/tree będziesz miał tego duuużo. [;
thomas2411
Kłaniają się Podstawy informatyki:
Wikipedia
Google

A w dużym skrócie chodzi o wywoływanie funkcji przez siebie samą do pewnego momentu. Czyli treść funkcji wywołuje również samą siebie. Należy jednak pamiętać o tym, aby sprawdzać jakiś warunek przy okazji, żeby nie doprowadzić do pętli nieskończonej.

Poczytaj o rekurencji i w ogóle o algorytmach, to są takie podstawy jak w matematyce mnożenie i równania. Bez tego raczej ciężko Ci będzie 'programować'

P.S. A jakie rozwiązanie Ty zastosowałeś, że uważasz, że na pewno jest źle?
Hudini5
Zrobiłem jedną tabele on takiej strukturze.

id | poziom | kategoria | nazwa

id to id.

poziom - to poziom zagnieżdżenia czyli w moim przypadku 0 wskazuje ze to jest kategoria 1 ze to jest podkategoria a 2 ze to jest link

kategoria - ma wartość 0 jeżeli jest to kategoria w innym przypadku zawiera nazwę rodzica czyli w przypadku podkategorii nazwę kategorii a w przypadku linka nazwę podkategorii.

nazwa - to nazwa kategorii, podkategorii lub linka(wyświetlanego w menu treść sobie chce brać z innej tabeli)

system do uzupełniania tej tabeli mam tylko problem z wygenerowaniem menu na jej podstawie poczytałem o tej rekurencji ale znajdowałem raczej teorie a jak już był jakiś przykład to jakiś dziwny że go nie rozumie. co do algorytmów to dzisiaj przez ten problem stwierdziłem że bez tego ani rusz w bardziej zaawansowane programowanie. Czy mógłby ktoś mi wytłumaczyć rekurencje na moim przykładzie?
Pilsener
Rekurencja to odwołanie się funkcji do samej siebie - czyli takie eee... odwołanie cykliczne które działa winksmiley.jpg

Tu masz praktyczny przykład:
http://blog.mwojcik.pl/2008/02/17/drzewa-k...-php-metoda-ip/ - jest tam też funkcja rekurencyjna do wyświetlania drzewa

Przykłady rekurencji znajdziesz też w manualu:
http://pl2.php.net/manual/pl/function.glob.php - zajrzyj do komentarzy, masz tam funkcje do wylistowania plików ze wszystkich podrzędnych katalogów, opierają się one właśnie na rekurencji.

Możesz też poczytać o tym:
http://phpedia.pl/wiki/Rekurencja - przykłady, opis - czego więcej trzeba?

Cytat
jakiś dziwny że go nie rozumie
- to napisze kod i prześledzi, to zrozumie, nic tak nie utrwala wiedzy jak praktyka, praktyka jeszcze raz praktyka.
Hudini5
Dzięki serdeczne za pomoc zabieram się do lektury smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.