Avatar billede werd Nybegynder
23. september 2002 - 16:30 Der er 15 kommentarer og
1 løsning

session("ID") skal være den samme som post i db

Jeg vil gerne lave lidt statistik på min hjemmeside og jeg har så fundet ud af med mig selv at hver besøgende skal have en session og et tilhørede ID - oplysningerne lagrer jeg i en database.

Det jeg gerne vil er at session("ID") skal være den samme som posten i min 'ID' kolonne i min dg - hvordan gør jeg det?

For jeg kan jo ikke vide hvilken ID den får i databasen, når jeg setter session("id") ...
Avatar billede excession Nybegynder
23. september 2002 - 16:58 #1
kan du ikke forklare lidt nærmere hvad det er du gerne vil?
Avatar billede cyb Nybegynder
23. september 2002 - 17:13 #2
Du kan ikke tildele Session("ID") nogen værdi, men du kan i din database sætte id feltet til værdien af Session("ID") - dette kræver dog at du ikke sætter nogle autonumber eller identity på feltet i din database. Du kan dog stadig godt have et index over feltet. Det der er lidt farligt er hvis din webserver giver sig til at give to session's samme id. Så er du jo lidt på den.
En bedre ide ville være at have et database genereret ID felt og et felt med din Session("ID") i samme tabel, og derved kunne kæde disse sammen.
Avatar billede werd Nybegynder
23. september 2002 - 17:14 #3
jeg vil lave en session.... i den vil jeg lave session("ID")

session("ID") skal sættes til en unik værdi. Den ID skal være mage til feltet 'ID' i en post jeg opretter ved samme lejlighed. Men hvordan får jeg session("id") til automatisk at blive det samme som 'id' i databasen?
Avatar billede werd Nybegynder
23. september 2002 - 17:16 #4
ok cyb - du har forstået det! - men du skal huske at sesion("id") skal være unik! Hvordan gør man det?
Avatar billede cyb Nybegynder
23. september 2002 - 17:25 #5
Session("ID") vil være unik for det på gældende tidspunkte på webservern, men jeg tror ikke der er nogen garanti for at Session("ID") er unik for altid. Derfor ville jeg lave en tabel i databasen ex.
TBLLog (LogID [Autonumber / identity], SessionID [string], osv. )
Du behøver ikke at oprette session da det sker af sig selv, du indsætter den bare i din database ex:
INSERT INTO TBLLog (SessionID, ..) VALUES ('"+ Session("ID") +"', ...)
Avatar billede 44nato44 Nybegynder
23. september 2002 - 17:29 #6
så hver gang en besøgende kommer ind på din side skal din database opdateres med ???
Avatar billede excession Nybegynder
23. september 2002 - 17:30 #7
hvis du tilføjer dagsdato og nøjagtig tidspunkt med sekunder på ID'et, kan du med 99.99999999% chance vide at den er unik..
Avatar billede werd Nybegynder
23. september 2002 - 22:11 #8
excession >> det må kunne gøres bedre

databasen skal ikke opdateres. Der skal bare tilføjes en ny post
Avatar billede cyb Nybegynder
24. september 2002 - 11:42 #9
Hvad mangler du mere for at få dit spørgsmål besvaret werd ?
Avatar billede werd Nybegynder
24. september 2002 - 15:10 #10
hvordan man via sessionobjektet holder forbindelsen til en bestemt post i databasen
Avatar billede cyb Nybegynder
25. september 2002 - 00:56 #11
Ok - men så er der hvist kun den alternative løsning tilbage, hvor du skriver din record i databasen når brugeren logger ind [On Session start] og så selecter id'et på denne record [select @@identity AS UserLogID]. Sidst men ikke midst tildeler du session objektet denne værdi [Session("UserLogID") = rs("UserLogID")].
Håber du kan benytte en af de skitserede løsninger. Hvis ikke er jeg bange for at jeg ikke har forstået opgaven korrekt :-(
Avatar billede werd Nybegynder
25. september 2002 - 15:38 #12
så er den der næsten zyb...

hvis vi lige laver lidt kode:

if session("UserID") = "" then

Set rs = Server.CreateObject("ADODB.Recordset")
sql = "select * from tag"
rs.Open sql, conn, 1, 3

rs.AddNew
rs("Ting1") = request.form("Ting1")
rs("Ting2") = request.form("Ting2")
rs.Update
rs.Close
set rs = nothing
session("UserID") = ????
else
'noget andet
end if
Avatar billede cyb Nybegynder
26. september 2002 - 08:21 #13
Så tror jeg mere det skal være noget i stil med:

if session("UserID") = "" then
  Set rs = Server.CreateObject("ADODB.Recordset")
  sql = "INSERT INTO tab (Ting1, Ting2) VALUES ('"+ request.form("Ting1") +"', '"+ request.form("Ting2") +"');select * from tag where id = @@identity "
  rs = conn.execute(sql)
  session("UserID") = rs("id")
else
Avatar billede werd Nybegynder
28. september 2002 - 12:04 #14
det kan være jeg er dum men jeg kan ikek få det til at virke... kan du ikke lave et komplet eksempel i en asp-fil og sende det til arj@staind.dk - så får du pts zyb
Avatar billede cyb Nybegynder
29. september 2002 - 13:13 #15
Har lige lavet ASP filen, du får den her:
<%
' Create db connection
Set Conn = Server.CreateObject("ADODB.Connection")

' Open connection to DB - remember to change this reference to db.
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ="& server.mappath("db.mdb") &"; "

' Create recordset
Set rs = Server.CreateObject("ADODB.Recordset")

' Chek if Session allready created
if session("UserID") = "" then
  ' Create insert SQL statement
  sql = "INSERT INTO TABLE1 (Field1, Field2) VALUES ('"+ request("Ting1") +"', '"+ request("Ting2") +"')"
  ' Execute insert.
  Conn.execute(sql)
  ' Create select SQL statement to retrieve DB identity
  sql = "select @@identity AS ID"
    ' Execute select sql statement
  rs = conn.execute(sql)
  ' Assign DB id to Session object
  session("UserID") = rs("ID")
else
' Session allready created do something else - for debug print info about user.
  sql = "SELECT * FROM TABLE1 WHERE ID ="& Session("UserID")
  rs = conn.execute(sql)
    response.write "UserID :" & Session("UserId") &"<br>"
    response.write "Field1 :" & rs("Field1") &"<br>"
    response.write "Field1 :" & rs("Field1") &"<br>"
end if
%>
Avatar billede werd Nybegynder
29. september 2002 - 18:42 #16
mange tak for hjælpen
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