06. november 2002 - 15:22Der er
25 kommentarer og 1 løsning
Session funtion og online tid !!!!
Hej gutter !
Jeg har et provokerne problem. Sagen er den at jeg er ved at lave en grafisk chat hvor man kan rykke rundt med en figur...
Det hele køre rimeligt men der er 2 fejl endtil videre jeg ikke kan rette selv.
Fejl 1: Jeg har lavet en fil der hedder ryk.asp, men den gider ikke rigtig opfange kordinaterne. Kort sagt den kan ikke finde værdien af session("left")
Koden: <% '//Kontakt til Chat-Database Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("../db.mdb") & ";UID=admin;PWD=;" Set rs = Server.CreateObject("ADODB.RecordSet") strSQL = "Select * From chat where brugernavn = '" & Session("brugernavn") & "'" rs.Open strSQL, Conn, 1, 3
'//Sender brugeren tilbage Response.Redirect("rum.asp?id=" & Session("roomID") & "") %>
Link: ryk.asp?top=100&left=20 (bare et eksempel)
Fejl 2: Jeg ville gerne have så man kunne se hvor mange timer og minutter man er på. Jeg ville først prøve med kun minutter, men intet virker den skriver en langt negativt tal...
Koden: <% '//Kontakt til Chat-Database Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("../db.mdb") & ";UID=admin;PWD=;" Set rs = Server.CreateObject("ADODB.RecordSet") strSQL = "Select * From chat where brugernavn = '" & Session("brugernavn") & "'" rs.Open strSQL, Conn, 1, 3
Hvis du vil havde skrevet det ud i Timer og minutter så har jeg denne function til det formål:
<% 'function kan ligge i bunden af koden function aTimeCalc(StartTime, FinishTime) Dim diff, mins, hours diff = datediff("n",StartTime,FinishTime) hours = int(diff / 60) mins = round(60*(diff / 60 - hours),0) hours = string(2-len(hours),"0") & hours mins = string(2-len(mins),"0") & mins aTimeCalc = hours & ":" & mins end function %>
Så udskifter du denne linie: dif = DateDiff("n", time1,time2)
Jeg for ingen fejl, men den gider ikke tilføje til databasen :o(
Sådan her ser hele min kode ud: <% Function NoCache() Response.Expires = 0 Response.ExpiresAbsolute = Now() -1 Response.AddHeader "pragma","no-cache" Response.AddHeader "cache-control", "private" 'stops proxy server cache Response.CacheControl = "no-cache" End Function %> <% '//Kontakt til Chat-Database Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("../db.mdb") & ";UID=admin;PWD=;" Set rs = Server.CreateObject("ADODB.RecordSet") strSQL = "Select * From chat where brugernavn = '" & Session("brugernavn") & "'" rs.Open strSQL, Conn, 1, 3
Session("brugerID") = rs("ID")
time1 = rs("logdate") time2 = Time dif = DateDiff("n", time1,time2)
'Udregn hours og mins hours = int(diff / 60) mins = round(60*(diff / 60 - hours),0) hours = string(2-len(hours),"0") & hours mins = string(2-len(mins),"0") & mins
'//Kontakt til MainDatabase Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("../db.mdb") & ";UID=admin;PWD=;" Set rs = Server.CreateObject("ADODB.RecordSet") strSQL = "Select * From brugere where brugernavn = '" & Session("brugernavn") & "'" rs.Open strSQL, Conn, 1, 3 rs("onlinetimer") = hours rs("onlineminutter") = mins rs.Update %>
Det virker men. Hvis jeg er på 50 min og så 50 min bagefter skriver den 100 min. Det er fordi den ved jo ikke hvor mange min der er i rs("onlineminutter") så kan det lade sig gøre at tilføje det til mins (jeg har prøvet selv men kunne ikke finde ud af det, så sletter den alle minutter og skriver den nye antal som man var online sidst)...
rs("onlineminutter") og rs("onlinetimer") skal vise hvor meget brugeren i alt har været på. Det vil sige at hvis en bruger har været på først 50 min og bagefter 50 min igen så skal den ikke skrive 100 min men 1 time og 40 min...
Jeg tænkte at man kunne gøre det ved at tilføje rs("onlineminutter") til Mins før den udregner. Men det kan jeg ikke helt få til at virke...
'Udregn hours og mins hours = int(dif / 60) mins = round(60*(dif / 60 - hours),0)
strSQL = "Select * From brugere where brugernavn = '" & Session("brugernavn") & "'" rs.Open strSQL, Conn, 1, 3
if Int(rs("onlineminutter")) + Int(mins) >= 60 then hours = hours + 1 mins = Int(mins) - 60 end if rs("onlineminutter") = rs("onlineminutter") + mins rs("onlinetimer") = rs("onlinetimer") + hours
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.