Autor Zpráva
filcuk
Profil
Zdravím,

máte nějaký návrh, jak jednoduše vytvořit skript pro ovládání pořadí menu?
nechci aby jste mi tu vypisovali dlouhé kódy, jen tu ideu.

Třeba měl jsem to tak: položky mají ID
Pro přehození pořadí jsem musel: Vypsat položky, najít tu kterou "posunuji", navýšit ID té, co ji posunuji a zmenšit ID položce nad ní.
> Zdá se mi to náchylné k chybám...

btw pro pobavení zkušenějších jsem přesně tohle nejdřív prováděl v lokálním souboru místo dtb, bylo to podle pořadí položek a měl jsem další 3 skripty, které ten soubor pak opravovaly po každém použití (chybějící /cr/lf atd.) :))
petr 6
Profil
Přidej další sloupec, kde budeš mít uloženou pozici, a řaď podle něj.

V takovém sloupci ani čísla nemusí jít po sobě, např. 10, 20, 30, 40. Když pak budeš chtít udělat třeba jednoduché posunutí čtvrté položky mezi první a druhou, tak jí nastavíš pozici 15.
filcuk
Profil
to neřeší můj problém (alespoň myslím :)), protože pak chci nastavit jinou stránku na druhé místo, a už to nebude fungovat.
filcuk
Profil
Nebo jinak řečeno: můj problém vyřeší automatické číslování s tím, že nesmí být použito číslo n, dokud neexistuje n-1.
0,1,2,...,n
panther
Profil
petr 6:
tvůj návrh s nepopořadě jdoucími pozicemi není správný. Do budoucna přinese jen problémy.

filcuk:
Pozice nebude od 0, ale spíše od jedničky (nultý záznam na stránce, nevím :-) ).
Přesouvání je jasné, jednomu pozici zvýšíš, druhému snížíš.
Pokud nějaký záznam vložíš, bude mít pozici MAX()+1.
Pokud některé smažeš, všem, co mají pozici vyšší než tento, nastavíš pozice = pozice - 1.
petr 6
Profil
panther:
Můžu vědět, jaké problémy?
panther
Profil
petr 6:
Mám položky s pozicí 10 a 20, jak píšeš.

Chci přesunout nějakou mezi ně, dám jí pozici 15, jak píšeš. Mezi současnou první a druhou budu chtít přesunout další položku. A nevím, jakou pozici jí dát. 15 je obsazená, což si musím nejprve někde zjistit.

Dejme tomu, že si to zjistím, dojdu do situace, že budu mít pozice 10, 11, 12, 13. A mezi druhou a třetí (11 a 12) budu chtít vložit další 2. A jsem v háji, budu používat desetinná čísla? Ne. Zvolil jsem špatný návrh aplikace.

Navíc si nějak nedovedu představit správu při desítkách či stovkách do sebe různě vnořených podstránek.
petr 6
Profil
panther:
Tak samozřejmě vím, že pro rostoucí počet změn se toto dá použít omezeně. Spíš mi nedošlo, že filcuk nechce měnit řádky v databázi ručně, ale skriptem. Je vidět, že už jsem v tom nějakou dobu nedělal.

Navíc si nějak nedovedu představit správu při desítkách či stovkách do sebe různě vnořených podstránek.
Bohužel když jsem před nějakou dobou předělával databázi jednomu zákazníkovi, tak jsem toto viděl... ale to je na jinou diskusi

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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