Det er nok noget med at rykke de menupunkter som har en højere placering end det du flytter til og mindre end det du flytter fra (når du flytter et punkt opad - omvendt når du flytter nedad).
Flyt et menupunkt opad (plassering bliver mindre):
UPDATE table SET plassering = plassering - 1 WHERE id = 1
UPDATE table SET plassering = plassering + 1 WHERE plassering = ( SELECT plassering FROM table WHERE id = 1 )
Og hvis du flytter det nedad er det blot med omvendt fortegn:
UPDATE table SET plassering = plassering + 1 WHERE id = 1
UPDATE table SET plassering = plassering - 1 WHERE plassering = ( SELECT plassering FROM table WHERE id = 1 )
Ups! Glem lige min indledende kommentar, da den var med vilkårlig flytning i tankerne. Når du kun flytter et punkt ad gangen, burde den illustrerede SQL være tilstrækkeligt.
Hmmm... om det er den bedste måde kan jeg ikke svare på, men det er vist en gængs måde at gøre det på og jeg synes det er en OK løsning.
Jeg kan ikke helt gennemskue om du rent faktisk spørger efter en konkret løsning til en brugergrænseflade til at løse dette, men jeg tolker dine egne eksempler i det retning, at du mangler et sæt SQL-kommandoer der kan håndtere flytningen.
Hvis det er brugergræsefladen du søger, så vil jeg umiddelbart vælge at lægge dem i en tabel og så ud for hvert menupunkt, have en knap der kalder hhv. flyt op og flyt ned når du trykker på knappen. Det eneste der skal sendes med i kaldet er i princippet id på det menupunkt der skal flyttes, resten klares af UPDATE-sætningerne...
Søker bare litt SQL-kommandoer ja, eventuelt ideer eller tips om hvordan det kan løses på andre måter.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.