Avatar billede slumbie Nybegynder
09. marts 2002 - 11:15 Der er 2 kommentarer og
1 løsning

Ret i position

Hejsa,
Jeg må efter en del tids søgen prøve her!  Jeg mangler en funktion til at rette positionen for en post i en database..
Jeg har oprettet et felt i db som hedder position hvor vigtigste indlæg får værdi 1 og nedefter. Jeg vil så godt have muligheden for at fx rette Indlæg med position "18" --> "9", hvor den så retter andre indlæg mellem 9 og 17 med +1, så der ikke vil være nogle duplicates..
Og hvis man nu retter 9 --> 18, vil den så skulle gøre det omvendt..

Det lyder vist lidt forvirrende, men er der nogen som kan se hvad jeg mener og måske kan hjælpe?
Avatar billede fireworld Nybegynder
09. marts 2002 - 12:18 #1
function hej(oldpos,newpos)

for x=oldpos to newpos
SQL = "UPDATE BLAAH SET POSITION=x+1 where position=x"
Next

SQL2 = UPDATE BLAAH SET POSITION=newpos where position=oldpos"

End Function



noget lign. det vel
Avatar billede slumbie Nybegynder
09. marts 2002 - 13:13 #2
ahh, ja ser ud som noget brugbart!
Hvordan vil det så se ud ved at have en select menu ud fra hvert indlæg i en listning af alle indlæg.
Dvs. man skal fra min visningsside af alle indlæg, have en select-menu ud fra hvert af dem med deres respektive position nummer i.. Ved at lave en ændring i et af dem, skal den automatisk rokerer indlæggene rundt ved valg
Avatar billede slumbie Nybegynder
17. marts 2002 - 14:53 #3
Ok.. Jeg har fået denne til at virke fint. Er godt noget rodet kode, but it works :)
<%

sub rykposition(newpos,oldpos)

    if newpos < oldpos then
    dim sql1
    dim strConn, strconn2, strconn1
    dim x, sql, sql2
Set strconn1 =Server.CreateObject("ADODB.Connection")
strConn1.open="DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("./db/wjt.mdb")
      sql1= "UPDATE staff SET position = 0 where position="&oldpos&""
strConn1.Execute (sql1)
strconn1.close

    for x=oldpos-1 to newpos step -1

Set strconn =Server.CreateObject("ADODB.Connection")
strConn.open="DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("./db/wjt.mdb")

      sql = "UPDATE staff SET position = "&x&" + 1 where position = "&x&""
response.write sql
strConn.Execute (sql)
strconn.close

    next
Set strconn2 =Server.CreateObject("ADODB.Connection")
strConn2.open="DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("./db/wjt.mdb")
      sql2= "UPDATE staff SET position = "&newpos&" where position=0"
strConn2.Execute (sql2)
strconn2.close

    else

    dim sql3
    dim strConn3, strconn4, strconn5
    dim xy, sql4, sql5
Set strconn3 =Server.CreateObject("ADODB.Connection")
strConn3.open="DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("./db/wjt.mdb")
      sql3= "UPDATE staff SET position = 0 where position="&oldpos&""
strConn3.Execute (sql3)
strconn3.close

    for x=oldpos+1 to newpos

Set strconn4 =Server.CreateObject("ADODB.Connection")
strConn4.open="DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("./db/wjt.mdb")

      sql4 = "UPDATE staff SET position = "&x&" - 1 where position = "&x&""
response.write sql4
strConn4.Execute (sql4)
strconn4.close

    next
Set strconn5 =Server.CreateObject("ADODB.Connection")
strConn5.open="DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("./db/wjt.mdb")
      sql5= "UPDATE staff SET position = "&newpos&" where position=0"
strConn5.Execute (sql5)
strconn5.close
end if
end sub
%>

Spørgsmålet er så bare nu hvordan jeg kan gribe newpos værdi fra en SELECT menu, og sende til den funtktion..?`?
Jeg kalder den lige nu via.
<%
call rykposition(10,5)
%>

Jeg vil godt give flere point hvis det er det der skal til.. Pls hlp
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester