Autor Zpráva
Ivorius
Profil
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
Ivorius
Co rozdělit v sql sloupec code a pak jen order by code1,code2,code3,pozice ?
Ivorius
Profil
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
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)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0