[ nepoverljiv @ 22.04.2011. 10:43 ] @
Zelim da napravim jedan sajt za radnju koja se bavi prodajom racunara. Sa leve strane bih imao kategorije, i jedino imam problem oko njihovog redjanja. Ne bih zeleo da ih redjam sve po abecedi, nego bih zeleo prvih par da poredjam onako kako ja hocu, a ostatak po abecedi. Znaci npr. ubacujem kategoriju laptopovi, dodelim joj broj 1 i zelim da laptopovi budu na prvom mestu. Ali bi zeleo da kasnije kad ubacim desktop racunare, i njih stavim da budu broj, da laptopovima promeni broj u 2. Pa u toku npr. promenim dekstop u 2 da se laptopovi automatski prebace u 1. I tak obih zeleo da imam jedno 5 kategorija koje bi mogao ja da redjam po broju koji im dodelim. Da li je ovo moguce, ili da li neko ima neki drugi savet kako ovo da odradim?
[ Mr. Bond @ 22.04.2011. 10:54 ] @
Pazi za ordering ti je najlakse da u bazi imas dodatnu kolonu u tabeli kategorije koja ce ti cuvati redni broj kategorije u navigaciji. Kasnije samo kad izvlacis uradis ORDER BY cat_order (recimo da se tako zove kolona).

Sto se naknadne reorganizacije tice uradi tako da kad napravis novu kategoriju i dodelis joj cat_order koji vec postoji, skripta update-uje tabelu tako sto ce promeniti cat_order svih postojecih kategorija, od tog rednog broja koji dodajes, povecati za jedan (spustiti ispod).

Nadam se da je ideja malo jasnija?
[ nepoverljiv @ 22.04.2011. 11:09 ] @
Ideja je jasna, i ja sam tako mislio. Samo me zeza ta skripta koja ce da update-uje ostale cat_order :)
[ VladaSu @ 22.04.2011. 15:48 ] @
Postavis da ti je default vrednost order kolone jednaka 100, tj. svi redovi na koje neces da utice order imaju vrednost 100. (lupio sam 100, treba neki broj veci od max broja grupa koje hoces da rucno sortiras)
ID mi je vrednost primary key-a reda koji premestas.

Prvi slucaj kada premestas sa vise pozicije na nizu. Npr sa pozicije 5 na poziciju 2 onda pokrenes ova 2 SQL-a;
Code (sql):

UPDATE TABLE SET `order` = `order` + 1 WHERE `order` >= 2 AND `order` < 5 AND `order` <> 100;
UPDATE TABLE SET `order` = 2 WHERE id=ID
 


Drugi slucaj kada premestas sa nize pozicije na visu. Npr sa pozicije 2 na poziciju 5;
Code (sql):

UPDATE TABLE SET ORDER = `order` - 1 WHERE `order` > 2 AND `order` <= 5 AND `order` <> 100;
UPDATE TABLE SET `order` = 5 WHERE id=ID
 


U kodu radis sortiranje:

Code (sql):

SELECT * FROM TABLE ORDER BY `order`, naziv