Avatar billede jonas_h Nybegynder
27. juni 2004 - 13:32 Der er 6 kommentarer

SLet record i global.asa

Hej! Jeg skal på min side, kunne checke hvilke brugere der er online, og har lavet det i global.asa, og når man går ind på siden, virker det også perfekt. Men når man så lukker siden, bliver brugeren ikke "logget af". Ved at teste en masse, er jeg ret sikker på at det er "onlineQuizUsers.Delete 1" som ikke virker! Men hvad er forkert, eller er der en nemmere måde?

Her er OnEnd-koden:


Sub Session_OnEnd()
    onlineQuizUsers.MoveFirst
   
    Do While Not onlineQuizUsers.EOF
        If onlineQuizUsers.Fields("id").Value = Session.SessionID Then
            onlineQuizUsers.Delete 1
        End If
        onlineQuizUsers.MoveNext
    Loop
   
    onlineQuizUsers.Update
End Sub
Avatar billede netro Nybegynder
28. juni 2004 - 09:04 #1
Folk har altid problemer med queries i Session_OnEnd. Deres forespørgsel udføres enten ikke, eller også bliver den det med X antal minutters forsinkelse.
Avatar billede jonas_h Nybegynder
28. juni 2004 - 15:47 #2
Jamen hvordan laver man så en "Hvem er online" funktion som faktisk virker? For er en bruger først logget ind på min side, bliver han aldrig slettet fra ovenstående kode...
Avatar billede netro Nybegynder
28. juni 2004 - 15:56 #3
Lav dig en ekstra kolonne af typen datetime (dato/klokkeslæt) i tabellen med brugere, som du fx. kalder "SidstOnline". Dette kan du opdatere eksempelvis hvert minut, når en bruger er online således:

If SidstOpdateret = "" Then SidstOpdateret = DateAdd("s", -60, Now)
If DateDiff("s", SidstOpdateret, Now) >= 60 Then
  ObjConn.Execute("Update BrugerTabel Set SidstOnline = Now() Where BrugerID = " & Session("BrugerID"))
  SidstOpdateret = Now
End If

Når du så skal vise alle online-brugere, kan du lave følgende udtræk:

Set rs = objConn.Execute("Select Brugernavn From BrugerTabel Where DateDiff('s', SidstOnline, Now()) < 60")
While Not rs.EOF
  Response.Write rs("Brugernavn") & "<br>"
  rs.MoveNext
Wend
Avatar billede netro Nybegynder
28. juni 2004 - 15:57 #4
Det er smartest at lave opdateringen fra en iframe, der refresher hvert minut.
Avatar billede jonas_h Nybegynder
23. juli 2004 - 00:46 #5
Undskyld det sene svar... Men ferie osv! Men de kald du laver.. set rs = objConn.Execute... Kan jeg bare skrive det fra alle ASP-sider? Hvordan ved den hvilket man snakker om osv?
Avatar billede netro Nybegynder
24. juli 2004 - 09:50 #6
objConn erstatter du med det navn, som din databaseforbindelse har.

Øverste fem kodelinier kan du lægge i en seperat fil (fx. online.asp), der indlæses i en iframe, og som opdaterer med et bestemt interval.

<iframe src="online.asp" style="width:0px height:0px;" frameborder="0"></iframe>
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