Avatar billede kaptajnknas Nybegynder
24. februar 2007 - 21:26 Der er 5 kommentarer og
1 løsning

Rangsystem med ASP

Jeg har tidligere haft dette spørgsmål oprettet, men roder stadig med det og jeg er ved at gå i flint over at det ikke virker som det skal.*:^)

Jeg forsøger at lave et rangsystem, som beregnes ud fra en score som countes og derefter sammenlignes med tidligere resultater fra databasen.

Nogen der kan se hvorfor det tilsyneladende er tilfældigt om rang op eller rang ned vælges?

<%
brugt = 0
rang = 0
countstop = 0
Set rs = Conn.Execute("SELECT * FROM bruger WHERE ORDER BY SCORE DESC")
if not rs.eof then
do while not rs.eof
if rs("brugernavn") = session("brugernavn") then
rang = rang + 1
countstop = ("" & rang & "")
if ("" & rang & "") = "1" then
response.write(" placering " & rang & "<img border=""0"" src=""image/1.gif"">")
else
response.write(" placering " & rang & "")
end if
else
rang = rang + 1
end if
rs.movenext
loop
end if

Set rs = Conn.Execute("SELECT * FROM bruger WHERE brugernavn = '"&replace(session("brugernavn"), "'", "''")&"'")

if ("" & countstop = rs("rang") & "") AND brugt = "0" then
if rs("rangsys") = "1" then
response.write ("<img border=""0"" src=""image/down.gif"">")
end if
if rs("rangsys") = "2" then
response.write ("<img border=""0"" src=""image/up.gif"">")
end if
end if

If ("" & rs("rang") < countstop & "") AND brugt = "0" Then
response.write ("<img border=""0"" src=""image/down.gif"">")
Conn.execute "UPDATE bruger SET rang = '" & countstop & "' WHERE brugernavn = '"&replace(session("brugernavn"), "'", "''")&"'"
Conn.execute "UPDATE bruger SET rangsys = '1' WHERE brugernavn = '"&replace(session("brugernavn"), "'", "''")&"'"
brugt = 1
end if

If ("" & rs("rang") > countstop & "") AND brugt = "0" Then
response.write ("<img border=""0"" src=""image/up.gif"">")
Conn.execute "UPDATE bruger SET rang = '" & countstop & "' WHERE brugernavn = '"&replace(session("brugernavn"), "'", "''")&"'"
Conn.execute "UPDATE bruger SET rangsys = '2' WHERE brugernavn = '"&replace(session("brugernavn"), "'", "''")&"'"
brugt = 1
end if
end if
%>
Avatar billede kalp Novice
24. februar 2007 - 22:56 #1
den her SQL ser da ikke for sund ud??
Set rs = Conn.Execute("SELECT * FROM bruger WHERE ORDER BY SCORE DESC")

du har en WHERE, men ingen betingelse.
Avatar billede kaptajnknas Nybegynder
25. februar 2007 - 12:18 #2
Den ser faktisk sådan ud, men ændre ingenting.
Set rs = Conn.Execute("SELECT * FROM bruger WHERE status = '1' ORDER BY SCORE DESC")
Avatar billede kalp Novice
25. februar 2007 - 12:21 #3
Det er det her som er tilfældigt?

if ("" & countstop = rs("rang") & "") AND brugt = "0" then
if rs("rangsys") = "1" then
response.write ("<img border=""0"" src=""image/down.gif"">")
end if
if rs("rangsys") = "2" then
response.write ("<img border=""0"" src=""image/up.gif"">")
end if
end if

tror at hvis du kunne forklare noget af det du prøver at lave i starten af din kode.

herfra og ned

brugt = 0
rang = 0
countstop = 0


så kan man måske bedre se hvorfor det ikke virker:)
Avatar billede kaptajnknas Nybegynder
25. februar 2007 - 13:12 #4
Således:

<%
'Søger for at værdierne brugt, rang og countstop er sat til 0
brugt = 0
rang = 0
countstop = 0
Set rs = Conn.Execute("SELECT * FROM bruger WHERE status = '1' ORDER BY SCORE DESC")
'Finder den aktuelle rang placering på hver bruger
if not rs.eof then
do while not rs.eof
if rs("brugernavn") = session("brugernavn") then
rang = rang + 1
'Fryser placering
countstop = ("" & rang & "")
if ("" & rang & "") = "1" then
response.write(" placering " & rang & "<img border=""0"" src=""image/1.gif"">")
else
response.write(" placering " & rang & "")
end if
else
rang = rang + 1
end if
rs.movenext
loop
end if

Set rs = Conn.Execute("SELECT * FROM bruger WHERE brugernavn = '"&replace(session("brugernavn"), "'", "''")&"'")

'Hvis placeringen er den samme som sidst, hentes sidste rangstatus
if ("" & countstop = rs("rang") & "") AND brugt = "0" then
if rs("rangsys") = "1" then
response.write ("<img border=""0"" src=""image/down.gif"">")
end if
if rs("rangsys") = "2" then
response.write ("<img border=""0"" src=""image/up.gif"">")
end if
end if

'Hvis tidligere rangstatus var højere, er stautus nu faldende
If ("" & rs("rang") > countstop & "") AND brugt = "0" Then
response.write ("<img border=""0"" src=""image/down.gif"">")
'Gemmer status i databasen
Conn.execute "UPDATE bruger SET rang = '" & countstop & "' WHERE brugernavn = '"&replace(session("brugernavn"), "'", "''")&"'"
Conn.execute "UPDATE bruger SET rangsys = '1' WHERE brugernavn = '"&replace(session("brugernavn"), "'", "''")&"'"
brugt = 1
end if

'Hvis tidligere rangstatus var lavere, er stautus nu stigende
If ("" & rs("rang") < countstop & "") AND brugt = "0" Then
response.write ("<img border=""0"" src=""image/up.gif"">")
'Gemmer status i databasen
Conn.execute "UPDATE bruger SET rang = '" & countstop & "' WHERE brugernavn = '"&replace(session("brugernavn"), "'", "''")&"'"
Conn.execute "UPDATE bruger SET rangsys = '2' WHERE brugernavn = '"&replace(session("brugernavn"), "'", "''")&"'"
brugt = 1
end if
end if
%>
Avatar billede kaptajnknas Nybegynder
27. februar 2007 - 22:37 #5
Nå ingen der har et bud, det kalder jeg eksperter.
Prøver på et andet forum - lukker spg
Avatar billede kalp Novice
27. februar 2007 - 22:39 #6
desværre er det ikke til at overskue som værende udefra
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