Jag har en kolumn vid namn "displayorder" som bestämmer i vilken ordning kategorier ska visas när jag loopar ut dem på en sida. I administrationssystemet ska man kunna klicka på "flytta upp" och kategorin ska då hoppa upp ett steg i ordningen.
Nedanstående kod fungerar tillfredsställande, men det känns som att jag gör det alldeles för svårt för mig. Om någon vet hur jag skulle kunna minska ner kodmängden och åstadkomma samma sak vore det guld om ni ville berätta hur. Anledningen till att jag frågar är att jag tycker mig minnas ha sett ett exempel på detta någonstans på wF som var mycket effektivare.
För att flytta upp kör jag:
UPDATE pers_categories
SET displayorder = displayorder - 1
WHERE displayorder >= (SELECT displayorder FROM pers_categories WHERE categoryid = x)
UPDATE pers_categories
SET displayorder = displayorder + 1
WHERE displayorder >= (SELECT displayorder FROM pers_categories WHERE categoryid = x)
AND categoryid <> x
Och för att flytta ner kör jag:
UPDATE pers_categories SET displayorder = displayorder - 1 WHERE displayorder >
(SELECT displayorder FROM pers_categories WHERE categoryid = x)
UPDATE pers_categories
SET displayorder = displayorder + 1
WHERE displayorder >= (SELECT displayorder FROM pers_categories WHERE categoryid = x)
AND categoryid <> (SELECT categoryid FROM pers_categories WHERE displayorder = (SELECT displayorder FROM
pers_categories WHERE categoryid = x)
AND categoryid <> x)
RED: Jag tar tillbaka kommentaren om att det fungerar tillfredsställande, för det gör det inte alls. Om jag flyttar upp den kategori som redan ligger högst upp blir det negativa tal i kolumnen. :r