Avatar billede mrhyde Nybegynder
13. februar 2001 - 22:20 Der er 16 kommentarer

SQL

Hvis man har et system som logger klientens ip og server tid, og klienten besøger siden to gange så vil der være to records i databasen..! Findes der en måde at logge aktiviteten i samme record? Altså når bruger klikker sig ind på siden bliver der søgt i en databse efter hans ip, hvis den findes så bliver hans \"AntalBesoeg\" + med 1, hvis ikke bliver der oprettet en ny record.
Information:
Tabellen\'s DSN navn er \"mrhyde\" og tabbel hedder \"spy\". ID er primærnøgle (autonum.). Rækkerne der efter hedder IP, Servertid og Antalbesøg.

mrhyde
Avatar billede blazer Nybegynder
13. februar 2001 - 22:23 #1
r da nemt nok....bare lav noget med at først tjek om den ip har været før..og så indsæt din data med en update sql where ip=userip
Avatar billede eagleeye Praktikant
13. februar 2001 - 22:24 #2
JA du kan tjekke om IP adresse findes til tabellen og så update isterdet for at indsætte:

SELECT * FROM spy WHERE IP=currentIP

If IP findes
  Update
Else
  Insert Ny
Avatar billede blazer Nybegynder
13. februar 2001 - 22:26 #3
altså det jeg LIGE har sagt..
Avatar billede eagleeye Praktikant
13. februar 2001 - 22:28 #4
ja ja man kan jo ikke se at folk har postet når man er ved at skrive...
Avatar billede erikjacobsen Ekspert
13. februar 2001 - 22:30 #5
Et IP-nummer er nu da en tosset ting at bruge. Mange brugere har jo samme
IP, men er alligevel forskellige (se f.eks. http://www.eksperten.dk/spm/49785),
og så bliver der jo talt galt. Men ok - det var jo ikke det spørgsmålet gik på....
Avatar billede eagleeye Praktikant
13. februar 2001 - 22:31 #6
Jeg går ud fra du har et recordset(rs)

Din update kunne se sådan ud:
\"UPDATE spy SET AntalBesøg=\" & rs(\"AntalBesøg\")+1 & \";\"

Din indsæt har du vel i forvejen.

Servertid, hvordan bruger du den?
Avatar billede stigc Nybegynder
13. februar 2001 - 22:33 #7
eller:

UPDATE spy SET AntalBesøg=AntalBesøg+1 WHERE ipadresse=\" & ipadresse
Avatar billede mrhyde Nybegynder
13. februar 2001 - 22:33 #8
Eksempler tak =) - Jeg har givet de nødvendige navne øverst...
Avatar billede stigc Nybegynder
13. februar 2001 - 22:40 #9
sql = \"SELECT COUNT (id) from spy WHERE IP=\" &  ipadresse
rs = conn.execute(sql)

ir rs(0) > 0 THEN
sql = \"UPDATE spy SET Antalbesøg=Antalbesøg+1 WHERE IP=\'\" &  ipadresse &\"\'\"
else
sql = \"INSERT INTO spy (IP, Antalbesøg) values (\'\" & ipadresse & \"\', 1)
end if

rs = conn.execute(sql)




Avatar billede eagleeye Praktikant
13. februar 2001 - 22:40 #10
Servertid, hvordan bruger du den ??
Avatar billede stigc Nybegynder
13. februar 2001 - 22:41 #11
øverst sætning skulle værre:

sql = \"SELECT COUNT (id) from spy WHERE IP=\'\" &  ipadresse &\"\'\"

Dog er intet testet, men det skulle virke......
Avatar billede eagleeye Praktikant
13. februar 2001 - 22:43 #12
IP_Adr = Request.ServerVariables(\"REMOTE_ADDR\")
strSQL = \"SELECT * FORM spy WHERE ip=\'\" & IP_Adr & \"\';\"
Set rs = myConn.Execute (strSQL)
if rs.EOF then
  \'Ny IP
  strSQL = \"INSERT INTO spy(ip, AntalBesøg) VALUES (\'\" & IP_Adr & \"\', 1)\"
Else
  \'Kendt IP
  strSQL = \"UPDATE spy SET AntalBesøg=\" & rs(\"AntalBesøg\")+1 & \" WHERE ip=\'\" & IP_Adr &\"\';\"
end if
\'Updater database
myConn.Execute (strSQL)

Men stigc har vist samme løsning :-)
Avatar billede mrhyde Nybegynder
13. februar 2001 - 22:43 #13
Jeg ved ikke hvordan man finder servertiden, kun klienttiden... :-/
Avatar billede mrhyde Nybegynder
13. februar 2001 - 22:47 #14
Jeg tester det til i morgen....=)
Avatar billede ortrak Nybegynder
13. februar 2001 - 23:02 #15
ding ding. time() eller now() er server-tiden.


/ortrak
Avatar billede sone Nybegynder
14. februar 2001 - 09:42 #16
stigc\'s svar kan udbygges rigtig smart, så man i de fleste tilfælde sparer et SQL-kald.

SQL=\"UPDATE spy SET AntalBesøg=AntalBesøg+1 WHERE ipadresse=\" & ipadresse
call Conn.Execute(SQL, rowsAffected)

Execute-kommendoen returnerer et tal til variablen rowsAffected = antallet af berørte poster i databasen.

IF rowsAffected=0 THEN \' ingen poster opdateret
  SQL=\"INSERT INTO....\"
  call Conn.Execute(SQL)
END IF

Når IP-nummeret eksisterer i databasen, så kræver det kun ét SQL-kald.
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