webForumDet fria alternativet

Soreteringsordning upp eller ned med pilar...

ASPur ASP

8 svar · 297 visningar · startad av brw

Medlem sedan juli 2000619 inlägg
Frågan#1

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?

------------------
Ingenting är omöjligt, bara en utmaning.

[Redigerat av brw den 23 feb 2001]

Medlem sedan juli 2000619 inlägg
#2

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...

------------------
Ingenting är omöjligt, bara en utmaning.

Medlem sedan juni 200032 969 inlägg
#3

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

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
if i'm not back in five minutes, just wait longer.</A>

Medlem sedan juni 200032 969 inlägg
#4

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

mvh,

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
if i'm not back in five minutes, just wait longer.</A>

Medlem sedan juli 2000619 inlägg
#5

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

------------------
Ingenting är omöjligt, bara en utmaning.

[Redigerat av brw den 23 feb 2001]

Medlem sedan juli 2000619 inlägg
#6

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?

------------------
Ingenting är omöjligt, bara en utmaning.

[Redigerat av brw den 24 feb 2001]

Medlem sedan dec. 19996 721 inlägg
#7

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.

Medlem sedan juni 200032 969 inlägg
#8

... 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.

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
if i'm not back in five minutes, just wait longer.</A>

Medlem sedan juli 2000619 inlägg
#9

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?

------------------
Ingenting är omöjligt, bara en utmaning.

138 ms totalt · 3 externa anrop · v20260731065814-full.55e59744
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)