Autor | Zpráva | ||
---|---|---|---|
radas Profil * |
#1 · Zasláno: 23. 2. 2009, 20:45:23
Zdravím,
potřeboval bych poradit jak bych měl postupovat při tomto problému. Mam tabulku clanky - id,nazev,clanek,kategorie,poradi .Članky se zobrazuji podle uloženého pořad. čísla jen jsem nějak nedořešil že když mi někdo uloži članek s pořadovým čislem 1 tak pak může někdo uložit članek taky s pořad.číslem 1 (pro danou kategorii) potřeboval bych nějaký spasny napad jak to udělat aby se mi to pořadové čislo přepočitalo. jen u těch článku které jsou v dané kategorii.. |
||
Joker Profil |
#2 · Zasláno: 23. 2. 2009, 21:40:38
radas
Předpokládám, že když článku nastavím pořadí n, zařadí se na n-té místo a ten, který tam byl doteď a všechny další se posunou o jedno níž? Tj. například: Nastavím článku pořadí 2. Takže první zůstane první, na druhé se zařadí ten nový, z druhého se stane třetí, ze třetího čtvrtý atd. V tom případě se před vložením článku zkontroluje jeho pořadí ($poradi) a udělá se: UPDATE clanky SET poradi = poradi + 1 WHERE poradi >= $poradi AND (dodatečná podmínka pro kategorii) ...tím se v pořadí vyrobí díra na místě které je potřeba a následně se tam INSERTem vloží ten nový. Pokud databáze umí transakce, bylo by fajn to dělat v transakci a v případě chyby v INSERT dotazu zavolat ROLLBACK, aby při chybě v INSERTu nezůstala v pořadí díra. Samozřejmě by při vložení byla vhodná i kontrola, jestli pořadí není větší, než počet článků v tabulce. |
||
radas Profil * |
#3 · Zasláno: 23. 2. 2009, 22:03:40
Joker
díky moc...asi jsi mě navedl na tu spravnou myšlenku... |
||
Časová prodleva: 15 let
|
0