Autor Zpráva
radas
Profil *
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
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 *
Joker
díky moc...asi jsi mě navedl na tu spravnou myšlenku...

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0