Autor | Zpráva | ||
---|---|---|---|
Ivorius Profil |
#1 · Zasláno: 24. 11. 2007, 17:20:26
Zdravím, mám menší dotaz.
mam tabulku category, v ní jsou slupce název,url, atd... ale hlavně sloupec code - kde je jedinečné číslo kategorie (ale protože ty kategorie se můžou různě zanořovat tak může vypadat code třeba takto: 6_9_2 (jako hlavní kategorie je 6, podkategorie1 je 9, podkategorie2 je 2)) a ještě sloupec pozice kde zadávám různá čísla pro třídění. potřeboval bych teď ty kategorie setřídit podle toho sloupce pozice, ale zároveň potřebuji aby to bylo setříděné v té dané úrovni kategorie. nevím jak to přesně vyjádřit ale snad mě chápete Tady je ukázka jak bych si to představoval: (1) kola; code:2; pozice 1 (1a) horská kola; code:2_3; pozice 1 (1b) silniční kola; code:2_1; pozice 2 (1c) treková kola; code:2_9; pozice 3 (1c I) treková kola typu I; code:2_9_1; pozice:1 (1c II) treková kola typu II; code:2_9_2; pozice:2; (1d) ostatni kola; code:2_11; pozice: 4; (2) fitness; code:3; pozice:2; Zatím mám tohle, jenže to netřídí jak potřebuji: function cattoarray(){ $sql="SELECT * FROM category WHERE del='' ORDER BY code,pozice ASC"; $vysledek = MySQL_Query($sql) or die ("dotaz neproveden"); $i=0; while ($radek = mysql_fetch_array ($vysledek)){ $menu[$i]["category"]=$radek['category']; $menu[$i]["code"]=$radek['code']; $menu[$i]["pozice"]=$radek['pozice']; $i++; } return $menu; } Asi to nepůjde přímo v tom sql a bude se muset použít nějaký array_multisort, ale rád si nechám poradit od zkušenějších. Děkuji |
||
Casero Profil |
#2 · Zasláno: 24. 11. 2007, 17:26:42
Ivorius
Co rozdělit v sql sloupec code a pak jen order by code1,code2,code3,pozice ? |
||
Ivorius Profil |
#3 · Zasláno: 24. 11. 2007, 21:25:10
Ono jde o to, že je potřeba navázat na tu kategorii vyšší úrovně (tak jak to mám v té ukázce, teda že je například hlavní kategorie1, hlavní kategorie2: subkategorie1, subkategorie2, hlavní kategori3,...) a to nevím jak bych tímto udělal.
|
||
WertriK Profil |
#4 · Zasláno: 25. 11. 2007, 00:27:14
Doporučoval bych ti následující:
v tabulce udělat ještě jeden sloupec třeba "pod" kde bude id kategorie pod kterou ta daná kategorie spadá. Takže tohle "6_9_2" zruš a zapisuj jen pouhé id. Hlavní kategorie ((1) kola,(2) fitness) budou mít pod = 0. Funkce pro výpis bude nějak takto - teorie : Funci "kategorie" budu předávat id podkategorie (pod), která se má vypsat. Vyberu z db všechny kategorie s požadovaným id podkategorie (pod = 0). Výsledek budu procházek v cyklu v němž funce zavolá sama sebe - rekurze - kde pod bude id vybrané kategorie. A to je tak nějak celé :) př. id | pod | název 1 | 0 | kola 2 | 1 | silniční 3 | 1 | horská 4 | 3 | odpružená 5 | 3 | neodpružená 6 | 0 | fitness Program vybere všechny kategorie s pod=0; začne vypisovat první kategorii (kola) - funkce zavolá sama sebe s pod=1; začne vypisovat kategorii silniční - rekurze s pod=2; (nevypíše nic) začne vypisovat kategorii horská - rekurze s pod=3; začne vypisovat kategorii odpružená - rekurze s pod=4; (nevypíše nic) začne vypisovat kategorii neodpružená - rekurze s pod=5; (nevypíše nic) začne vypisovat kategorii fitness - rekurze s pod=6; (nevypíše nic) |
||
Časová prodleva: 16 let
|
0