Avatar billede thesphinx Nybegynder
01. august 2003 - 10:26 Der er 5 kommentarer og
1 løsning

Indsæt SessionID i Database

Jeg er ved at lave et online brugersystem og har et script der går ind og opdaterer tabellen ved ny indlæsning af siden hvis ID'et passer med det i databasen, ellers indsætter den et nyt..
Jeg har dog et problem, hvis databasen er tom vil den ikke indsætte nogen data, den skriver bare en fejl..
Scriptet er her:
<%
Set rsOnline = Server.CreateObject("ADODB.Recordset")
    strSQL = "SELECT * From TblOnline"
    rsOnline.Open strSQL, strCon
If Session.SessionID = rsOnline("SessionID") Then
Set rsOnline = Server.CreateObject("ADODB.Recordset")
    strSQL = "UPDATE TblOnline SET Opdateret='" & Now() & "' WHERE SessionID='" & Session.SessionID & "'"
    rsOnline.Open strSQL, strCon
Else
Set rsOnline = Server.CreateObject("ADODB.Recordset")
    strSQL = "INSERT INTO TblOnline (" &_
    "SessionID, Opdateret) " &_
    "values('" & Session.SessionID & "', '" & Now() & "')"
    rsOnline.Open strSQL, strCon
End If
%>
Og Fejlen den skriver er her:
error '80020009'
Exception occurred.

Hvad har jeg lavet forkert..???
Avatar billede -thomas- Nybegynder
01. august 2003 - 10:35 #1
Hvad med noget lign:

<%
Set rsOnline = Server.CreateObject("ADODB.Recordset")
    strSQL = "SELECT * From TblOnline WHERE SessionID = '" & Session.SessionID & "'"
    rsOnline.Execute(strSQL)
   
If Not rsOnline.Eof Then
        Set rsOnline2 = Server.CreateObject("ADODB.Recordset")
        strSQL = "UPDATE TblOnline SET Opdateret='" & Now() & "' WHERE SessionID='" & Session.SessionID & "'"
        rsOnline2.Execute(strSQL)
        rsOnline2.Close
        Set rsOnline2 = Nothing
Else
        Set rsOnline2 = Server.CreateObject("ADODB.Recordset")
        strSQL = "INSERT INTO TblOnline (" &_
        "SessionID, Opdateret) " &_
        "values('" & Session.SessionID & "', '" & Now() & "')"
        rsOnline2.Execute(strSQL)
        rsOnline2.Close
        Set rsOnline2 = Nothing
End If

rsOnline.Close
Set rsOnline = Nothing
%>
Avatar billede -thomas- Nybegynder
01. august 2003 - 10:36 #2
Hvor har du din db-connection?
Avatar billede keysersoze Ekspert
01. august 2003 - 10:36 #3
du mangler at tjecke for om netop databasen er tom - prøv;

<%
Set rsOnline = Server.CreateObject("ADODB.Recordset")
strSQL = "SELECT * From TblOnline"
rsOnline.Open strSQL, strCon
if not rsOnline.eof then
    If Session.SessionID = rsOnline("SessionID") Then
        Set rsOnline = Server.CreateObject("ADODB.Recordset")
        strSQL = "UPDATE TblOnline SET Opdateret='" & Now() & "' WHERE SessionID='" & Session.SessionID & "'"
        rsOnline.Open strSQL, strCon
    Else
        Set rsOnline = Server.CreateObject("ADODB.Recordset")
        strSQL = "INSERT INTO TblOnline (" &_
        "SessionID, Opdateret) " &_
        "values('" & Session.SessionID & "', '" & Now() & "')"
        rsOnline.Open strSQL, strCon
    End If
end if
%>
Avatar billede thesphinx Nybegynder
01. august 2003 - 10:43 #4
Sejt det virker..;)
Jeg havde overhovedet ikke selv tænkt på det..:)
Det er nu ændret og det virker..
Jeg skal også have lavet sådan at hvis der er en bruger der ikke har opdateret siden i ca 5-10min skal han slettes fra databasen..
Hvordan gør jeg det??
Er ikke så stiv i det der med sessions og tid..:)
Avatar billede -thomas- Nybegynder
01. august 2003 - 10:45 #5
Laver et felt af typen Timestamp og sammenligner med det inden du opdaterer.
Avatar billede keysersoze Ekspert
01. august 2003 - 10:50 #6
enten skal du lave en session.timeout i global.asa på de 5-10 minutter og så i session.onend køre en sql der sletter brugeren fra db.

eller også skal din sql se ud noget a la dette;

strSQL = "SELECT * From TblOnline WHERE SessionID = '" & Session.SessionID & "' AND opdateret < '" & dateadd("n", 5, now()) & "'"
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