Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wielopozionowe menu z tabeli bazy
Forum PHP.pl > Forum > Bazy danych > MySQL
id4
Witam

Pewno troche zakrece moj problem, ale nie wiem jak go opisac by przedstawic o co mi chodzi.
Mam tabele w ktorej znajduja sie informacje: ID, NAME, POSITION, PARENT, PATH.
ID to wiadomo
NAME to nazwa pozycji w menu
POSITION to jej pozycja (od 0 w gore, jesli wszystkie 0 to wg NAME)
PARENT to tez w sumie wiadomo
PATH to informacja bardziej do wyswietlenia, ale moze sie przydac - sa to kolejne nazwy i numery ID w drzewku ktore ma byc wyswietlane - taki parent ale z nazwami i cala sciezka do ktorej nalezy.

Przez takie zapytanie sql ...

  1. SELECT id, name, position, parent, path
  2. FROM `menu`
  3. ORDER BY path, position, name
  4. LIMIT 0 , 30


... udalo mi sie wyswietlic cos takiego.

CODE

id name position parent path
---
1 Odzież 0 0
3 Spodnie 0 1 |Odzież:1|
6 Koszulki 1 1 |Odzież:1|
8 Wełna 0 6 |Odzież:1||Koszulki:6|
7 Bawełna 1 6 |Odzież:1||Koszulki:6|
4 Jeans 0 3 |Odzież:1||Spodnie:3|
11 Szmata 0 3 |Odzież:1||Spodnie:3|
5 Sztruks 0 3 |Odzież:1||Spodnie:3|
12 Czarny 0 4 |Odzież:1||Spodnie:3||Jeans:4|
14 Niebieski 1 4 |Odzież:1||Spodnie:3||Jeans:4|
13 Czerwony 2 4 |Odzież:1||Spodnie:3||Jeans:4|


No a mnie to nie satysfakcjonuje, bo nie jest po kolei tak jak powinno.
Musze otrzymac taki zapis by po olei zamienic odpowiednia linie na xhtml i stworzyc z tego menu wielopoziomowe o nieokreslonej glebokosci.

CODE
id name position parent path
---
1 Odzież 0 0
3 Spodnie 0 1 |Odzież:1|
4 Jeans 0 3 |Odzież:1||Spodnie:3|
12 Czarny 0 4 |Odzież:1||Spodnie:3||Jeans:4|
14 Niebieski 1 4 |Odzież:1||Spodnie:3||Jeans:4|
13 Czerwony 2 4 |Odzież:1||Spodnie:3||Jeans:4|
11 Szmata 0 3 |Odzież:1||Spodnie:3|
5 Sztruks 0 3 |Odzież:1||Spodnie:3|
6 Koszulki 1 1 |Odzież:1|
8 Wełna 0 6 |Odzież:1||Koszulki:6|
7 Bawełna 1 6 |Odzież:1||Koszulki:6|


Moze ktos z Was mial juz podobny problem lub wie jak go mozna rozwiazac?
Z gory dziekuje za jakakolwiek pomoc.
erix
Skomplikowałeś trochę strukturę. Będzie mało wydajna.

Do poczytania: http://artykuly.zyxist.com/czytaj.php/drzewa_w_php_i_mysql
id4
Cytat(erix @ 23.12.2009, 12:04:43 ) *
Skomplikowałeś trochę strukturę. Będzie mało wydajna.


To co pokazalem wyzej to czesc tabeli z produktami i niestety nie moge jej zmienic.
Jesli chodzi o wydajnosc, to nie jest ona najwazniejsza dla mnie, poniewaz po utworzeniu struktury menu bedzie ona zapisana do pliku jako gotowe menu xhtml i pokazywana bezposrednio na stronie. Plik modyfikowany bedzie tylko po zmianie struktury w systemie zarzadzania.

Szukam juz sporo czasu rozwiazania, ale nie umiem znalezc niestety. Zbyt poczatkujacy ze mnie bazodanowiec winksmiley.jpg
Pilsener
Moim zdaniem lepsze są drzewa metodą IP:
http://blog.mwojcik.pl/2008/02/17/drzewa-k...-php-metoda-ip/

Masz tam opisane czarno na białym:
1. Jak pobrać całe drzewo jednym zapytaniem i wrzucić je do tablicy
2. Rekurencyjną funkcję, która wyświetli tą tablice w postaci menu (ul+ li)
id4
Cytat(Pilsener @ 23.12.2009, 14:04:06 ) *
Moim zdaniem lepsze są drzewa metodą IP:
http://blog.mwojcik.pl/2008/02/17/drzewa-k...-php-metoda-ip/


Genialne rozwiazanie dla mojego problemu smile.gif
Zero przerabiania DB i bardzo krotki, zwiezly kod.
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.