Avatar billede medievil Nybegynder
06. november 2002 - 15:22 Der 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

'//Rykker Bruger
rs("left") = Session("left")
rs("top") = Session("top")
rs("roomid") = Session("roomID")
rs.update

'//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

Session("brugerID") = rs("ID")

time1 = rs("logdate")
time2 = Time
dif = DateDiff("n", time1,time2)
%>


Jeg håber nogle vil ofre lidt tid og hjælpe mig :o)
Avatar billede eagleeye Praktikant
06. november 2002 - 15:35 #1
1.: Hvis det ´left, top kommer via linket skal det være request.Querystring og ikke Session som hender værdierne..

'//Rykker Bruger
rs("left") = Request.Querystring("left")
rs("top") = Request.Querystring("top")
Avatar billede eagleeye Praktikant
06. november 2002 - 15:37 #2
2.: Hvilket format er logdate i databasen ??
Avatar billede medievil Nybegynder
06. november 2002 - 17:34 #3
Dato og klokkeslæt - Så viser den så tiden når man logger på...
Avatar billede eagleeye Praktikant
06. november 2002 - 18:47 #4
Er det gemt som eks 06-11-2002 17:45:22  ?
Avatar billede eagleeye Praktikant
06. november 2002 - 18:57 #5
For hvis det ligger i som før vist så skal svart til 2 være:

Ret denne linie:
time2 = Time

Til:
time2 = Now
Avatar billede eagleeye Praktikant
06. november 2002 - 19:03 #6
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)

Med:
Response.Write aTimeCalc(time1,time2)
Avatar billede medievil Nybegynder
06. november 2002 - 19:18 #7
Hey Tak man, jeg tjekker lige om det med online tid virker...

Tabellen skriver: 17:45:22
Avatar billede eagleeye Praktikant
06. november 2002 - 19:26 #8
Ok... hvis det kun er tidspunktet der er i databasen så skal time2 være lig time:
time2 = time
Avatar billede medievil Nybegynder
06. november 2002 - 19:34 #9
Jeg for en fejl...


men det er hellere ikke helt det jeg vil.

Jeg har 2 tabeller den ene hedder rs("onlinetimer") og den anden hedder rs("onlineminutter")

Kan jeg tilføje tiden til disse tabeller???

Det ville være fedt...
Avatar billede eagleeye Praktikant
06. november 2002 - 19:47 #10
Ja..

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

rs("onlinetimer") = hours
rs("onlineminutter") = mins
rs.Update
Avatar billede medievil Nybegynder
07. november 2002 - 14:33 #11
Undskyld jeg først svare nu...

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
%>
Avatar billede eagleeye Praktikant
07. november 2002 - 20:03 #12
Hov jeg har skrevet et f for meget i diff i denne linie:
hours = int(diff / 60)

Prøv med:
hours = int(dif / 60)
Avatar billede medievil Nybegynder
08. november 2002 - 12:43 #13
Jeg for denne fejl:
Microsoft VBScript runtime error '800a0005'

Invalid procedure call or argument: 'string'

/usersystem/chatten/luk.asp, line 27

linie 27 er: hours = string(2-len(hours),"0") & hours
Avatar billede eagleeye Praktikant
08. november 2002 - 16:27 #14
Prøv at lave disse linier:

'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

Om til:

'Udregn hours og mins
hours = int(dif / 60)
mins = round(60*(dif / 60 - hours),0)
hours = Right("0" & hours,2)
mins = Right("0" & mins,2)
Avatar billede medievil Nybegynder
08. november 2002 - 21:58 #15
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)...
Avatar billede eagleeye Praktikant
09. november 2002 - 13:49 #16
Hvis du bruger denne:

strSQL = "Select * From brugere where brugernavn = '" & Session("brugernavn") & "'"
rs.Open strSQL, Conn, 1, 3
rs("onlinetimer") = hours
rs("onlineminutter") = mins
rs.Update

Så skulle den overskive med det nye antal hver gang.
Avatar billede eagleeye Praktikant
10. november 2002 - 02:16 #17
Eller mener du den skal summere fra gang til gang?
Avatar billede medievil Nybegynder
10. november 2002 - 14:39 #18
Jeg har gjort sådan her:

rs("onlineminutter") = rs("onlineminutter") + mins

Også hvis jeg er på 50 min og bagefter 50 min igen så er det 100 min der kommer til at stå og det er ikke meningen
Avatar billede eagleeye Praktikant
10. november 2002 - 14:42 #19
Så prøv med

rs("onlineminutter") = mins
Avatar billede medievil Nybegynder
10. november 2002 - 15:51 #20
Jeg tror ikke du forstår hvad jeg mener!

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...
Avatar billede eagleeye Praktikant
10. november 2002 - 15:54 #21
og du har både  rs("onlinetimer")  og  rs("onlineminutter") ??
Avatar billede medievil Nybegynder
10. november 2002 - 15:58 #22
Ja, men kan du ikke se at hvis man kunne tilføje onlineminutter til mins så ville den automatisk lægge en til hours...
Avatar billede medievil Nybegynder
10. november 2002 - 16:02 #23
Jeg kan vise det sådan her:

hours = int(dif / 60)
mins = mins + rs("onlineminutter")
mins = round(60*(dif / 60 - hours),0)
hours = Right("0" & hours,2)
mins = Right("0" & mins,2)

Men det virker ikke :o(
Avatar billede eagleeye Praktikant
10. november 2002 - 16:03 #24
Så kan du gøre noget i stil med:

'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
Avatar billede medievil Nybegynder
10. november 2002 - 16:25 #25
Jeg lavede koden lidt om men det virker nu, tak.
Nu vil jeg ikke pine dig mere (med det her spørgsmål i hvert fald).
Avatar billede eagleeye Praktikant
10. november 2002 - 16:27 #26
Ok ;)
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