---
title: "Soreteringsordning upp eller ned med pilar..."
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/8323-soreteringsordning-upp-eller-ned-med-pilar"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "brw"
published: "2001-02-23T07:10:00.000Z"
updated: "2001-02-26T08:33:00.000Z"
replies: 8
views: 318
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/8323-soreteringsordning-upp-eller-ned-med-pilar"
---

# Soreteringsordning upp eller ned med pilar...

## #1 — brw, 2001-02-23T07:10Z

Hej!

Jag håller på med en menypryl och har lite funderingar på sorteringsordningen i databasen.

Som jag har nu så har jag ett fält i databasen som heter "ordning" där lagrar jag värden från "01" och uppåt..

Låt oss säga att jag har 5 poster i denna databas där ordning då blir 01, 02, 03, 04, 05

Typ "Select \* from databas order by ordning ASC"

När jag listar upp posterna på en sida så har jag ett formulär med en textruta vid varje post där värdet för ordning visas och där jag kan ändra på alla samtidigt med en uppdateringsknapp längst ned som uppdaterar hela formuläret. Det är inte så jobbigt när man bara har 5 poster men när det börjar komma över 10 så blir det lite småjobbigt.

Det jag nu tänkt göra är att istället för textrutan ha 2 st bilder en med en "uppåtpil" och en med en "nedåtpil" på varje post (utom på första och sista posterna där jag har antingen pil-upp bild eller pil-ned bild) för att med dom kunna ändra ordningen.

Jag undrar om nån kan hjälpa mig med en kodsnutt för att få till detta.

Jag har försökt lite.. :)

Select \* from databas where id = "request.querystring("id")"

\<a href="\<%request.servervariables("script_name")%\>?id=id&navigering=upp&ordning=ordningsnummret"\>\<img src="upp.gif"\>\</a\>
\<a href="\<%request.servervariables("script_name")%\>?id=id&navigering=ned&ordning=ordningsnummret"\>\<img src="ned.gif"\>\</a\>

och sen måste man ju få den att flytta ned posten ovan eller upp posten under beroende på om den skall flyttas upp eller ned i ordningen.

Alltså om jag ska flytta post 03 upp till 02 så måste ju 02 ner till 03 eller tvärtom...

Nån som har nån idé på hur det kan se ut?

Permalänk: https://www.webforum.nu/p/8323

## #2 — brw, 2001-02-23T12:18Z

Ingen som har nån kodsnutt.. det är ju bara koden för att kunna få den som man flyttar upp eller ner att få ett högre resp. lägre nummer och flytta den posten till det som den som var innan hade...

Permalänk: https://www.webforum.nu/p/260015

## #3 — @nders, 2001-02-23T14:00Z

har du verkligen sorteringsnuffrorna i tabellen som textfält? varför inte tal?

Permalänk: https://www.webforum.nu/p/260016

## #4 — @nders, 2001-02-23T14:02Z

kanske den här tråden kan hjälpa dig på traven?
 <http://cgi.webforum.nu/wf/Forum11/HTML/002774.html> 

mvh,

Permalänk: https://www.webforum.nu/p/260017

## #5 — brw, 2001-02-23T16:53Z

Finns det nån nackdel att inte använda tal? jag använder alltid text. :)

Permalänk: https://www.webforum.nu/p/260018

## #6 — brw, 2001-02-24T12:36Z

Tack @anders.. nu har jag fixat en kod här som fungerar utmärkt men jag har stött på lite problemas..

```
<%
forstanr = "Select ordning FROM menyhuvud ORDER BY ordning ASC"
Set fnr = Connection.Execute(forstanr)
forsta = Cint(fnr("ordning"))

sistanr = "Select ordning FROM menyhuvud ORDER BY ordning DESC"
Set snr = Connection.Execute(sistanr)
sista = Cint(snr("ordning"))

If Request.Querystring("up") <> "" THEN

up = Request.Querystring("up")

TMP1 = "SELECT ordning, id FROM menyhuvud WHERE ordning = '" & up &  "';"
Set myTMP1 = Connection.Execute(TMP1)
postup = myTMP1("ordning")
postupid = myTMP1("id")
postupny = postup - 1

TMP2 = "SELECT ordning, id FROM menyhuvud WHERE ordning = '" & postup - 1 & "';"
set myTMP2 = Connection.Execute(TMP2)
postdown = myTMP2("ordning")
postdownid = myTMP2("id")
postdownny = postdown + 1

SQL2 = "UPDATE menyhuvud SET ordning = '" & postupny & "' WHERE id = "& postupid &" ;"
SQL1 = "UPDATE menyhuvud SET ordning = '" & postdownny & "' WHERE id = "& postdownid &" ;"
Connection.Execute(SQL2)
Connection.Execute(SQL1)

'--------------------------------------------
ELSEIF Request.Querystring("down") <> "" THEN
'--------------------------------------------

down = Request.Querystring("down")

TMP1 = "SELECT ordning, id FROM menyhuvud WHERE ordning = '" & down &  "';"
Set myTMP1 = Connection.Execute(TMP1)
postdown = myTMP1("ordning")
postdownid = myTMP1("id")
postdownny = postdown + 1

TMP2 = "SELECT ordning, id FROM menyhuvud WHERE ordning = '" & postdown + 1 & "';"
set myTMP2 = Connection.Execute(TMP2)
postup = myTMP2("ordning")
postupid = myTMP2("id")
postupny = postup - 1

SQL2 = "UPDATE menyhuvud SET ordning = '" & postupny & "' WHERE id = "& postupid &" ;"
SQL1 = "UPDATE menyhuvud SET ordning = '" & postdownny & "' WHERE id = "& postdownid &" ;"
Connection.Execute(SQL2)
Connection.Execute(SQL1)

'SQL2 = "UPDATE menyhuvud SET ordning = '" & postdownny & "' WHERE id = "& postupid &" ;"
'SQL1 = "UPDATE menyhuvud SET ordning = '" & postupny & "' WHERE id = "& postdownid &" ;"
'Connection.Execute(SQL2)
'Connection.Execute(SQL1)

END IF
%>
```

Problemet blir när man tar bort en post då blir det till exempel  ordning 1,2,4,5,6,7  och när jag då ska flytta upp post 4 ett steg vill den ju byta med numret som den tror finns ovan som då ska vara 3... kan man inte bygga om på något smart sätt så att den tar nästan nummer som är ovanför utan att vara beroende av att det är samma nr serie?

Nån som kan hjälpa mig med att få till det?

Permalänk: https://www.webforum.nu/p/260019

## #7 — emission, 2001-02-25T22:01Z

Finns det nån nackdel att inte använda tal? jag använder alltid text.

Text kräver mer lagringsutrymme, och om man sorterar så kommer 10 före 2.

Permalänk: https://www.webforum.nu/p/260020

## #8 — @nders, 2001-02-26T05:41Z

... och du kan inte heller använda uträkningsfunktioner i din sql-fråga.

\- - - - - 

om du istället för att ha id som identifierare i din where-sats har ditt ordningstal, så kommer din uppdatering att fungera.

den kommer givetvis inte uppdatera om inte ordningstalet närmast ovanför finns i tabellen, men det behöver den ju å andra sidan inte.

Permalänk: https://www.webforum.nu/p/260021

## #9 — brw, 2001-02-26T08:33Z

Ok.. nu har jag ändrat till numeriskt fält.

Fast jag gjorde så att med tanke på sorteringsordningen så la jag till en 0 före alla tal som var under 10 och på så sätt löste sig sorteringen.
Men det blev ju lite omständigt så nu använder jag tal.

Vad menar du.. går det inte att flytta upp posten om det saknas ett nummer i sorteringsordningen?

Isf måste jag ju flytta ned den som jag vill ta bort längst ned och sen ta bort den då blir det ju rätt.. men det bilr ju lite jobbigt om man har många poster.

Beskriv lite mer hur du menade om det går att lösa?

Permalänk: https://www.webforum.nu/p/260022

---

Tråden på webben: https://www.webforum.nu/amne/asp/8323-soreteringsordning-upp-eller-ned-med-pilar
