Avatar billede angelica71 Nybegynder
24. oktober 2003 - 19:23 Der er 9 kommentarer og
1 løsning

asp counter der tæller unikke besøgende

Hej Eksperter

Nogen der ligger inde med et færdigt script, der tæller unikke besøgende, og lager dataerne i en accessdatabase som kunne tænke sig at vise det til mig? :)


Jeg er først lige startet med min første hjemmeside, men har dog fulgt nøje med når min mand arbejder ved pc'en.
Han kan dog ikke hjælpe mig her, kan I?

Angelica
Avatar billede angelica71 Nybegynder
24. oktober 2003 - 19:35 #1
Skal lige siges at jeg har støvet Ekspertens svar igennem, og det tætteste jeg kunne komme det jeg søgte var http://www.eksperten.dk/spm/181386
hvor jeg har gjort ALT som der står i rune_c' svar. Men jeg løber på en fejlmelding der hedder :
Microsoft OLE DB Provider for ODBC Drivers error '80040e10'

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 2.

/angelica/counter.asp, line 12
Avatar billede thesurfer Nybegynder
24. oktober 2003 - 19:39 #2
du har ikke skrevet hvad linie 12 er..
Avatar billede angelica71 Nybegynder
24. oktober 2003 - 19:41 #3
Går udfra at det er denne linie ......
set rs0 = conn.execute("Select Top 1 * from counter where sip='" & s_ip & "'
......... da hele scriptet ser således ud

<%
Option Explicit

dim conn, s_ip, s_time, rs0, rs1

set conn = Server.CreateObject("ADODB.Connection")
conn.open "Driver={Microsoft Access Driver (*.mdb)}; Dbq="&Server.MapPath("db.mdb")

s_ip = Request.ServerVariables("REMOTE_ADDR")
s_time = Now()

set rs0 = conn.execute("Select Top 1 * from counter where sip='" & s_ip & "' order by sdate desc")

if (rs0.BOF AND rs0.EOF) then
    conn.execute("INSERT INTO counter (sip, sdate) VALUES ('" & s_ip & "','" & s_time & "')")
elseif (datediff("d", rs0("sdate"), s_time) <> "0") then
    conn.execute("INSERT INTO counter (sip, sdate) VALUES ('" & s_ip & "','" & s_time & "')")
end if

rs1 = conn.execute("Select Count(*) as cnt from counter")

Response.Write("Antal besøgende til vidre: " & rs1("cnt"))

%>
Avatar billede eagleeye Praktikant
25. oktober 2003 - 00:44 #4
Det ser ud som om du har en/to fejl i din SQL sætning:
set rs0 = conn.execute("Select Top 1 * from counter where sip='" & s_ip & "' order by sdate desc")

Først så er counter reserveret ord i SQL, så der skal [] omkring [counter].
Andet hvis sip er defineret som tal skal der ikke ' omkring i SQL sætningen.

Så prøv med denne:

set rs0 = conn.execute("Select Top 1 * from [counter] where sip=" & s_ip & " order by sdate desc")


Det med counter og ' gælder også i de to andre SQL sætninger du har.
Avatar billede angelica71 Nybegynder
25. oktober 2003 - 13:16 #5
sip er ikke difineret som tal, men som tekst.
Nu har jeg ændret det til ....

<%
Option Explicit

dim conn, s_ip, s_time, rs0, rs1

set conn = Server.CreateObject("ADODB.Connection")
conn.open "Driver={Microsoft Access Driver (*.mdb)}; Dbq="&Server.MapPath("db.mdb")

s_ip = Request.ServerVariables("REMOTE_ADDR")
s_time = Now()

set rs0 = conn.execute("Select Top 1 * from [counter] where sip=" & s_ip & " order by sdate desc")




if (rs0.BOF AND rs0.EOF) then
    conn.execute("INSERT INTO [counter] (sip, sdate) VALUES (" & s_ip & ",'" & s_time & "')")
elseif (datediff("d", rs0("sdate"), s_time) <> "0") then
    conn.execute("INSERT INTO [counter] (sip, sdate) VALUES (" & s_ip & ",'" & s_time & "')")
end if

rs1 = conn.execute("Select Count(*) as cnt from [counter]")

Response.Write("Antal besøgende til vidre: " & rs1("cnt"))

%>

Får jeg nu følgende fejl ....

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Syntax error in number in query expression 'sip=xx.xxx.xx.xx'.

/angelica/counter.asp, line 12

Hvor xx.xxx.xx.xx er min ip. Hvis jeg så ændrer db, så s_ip er difineret som tal får jeg samme fejl.
Avatar billede eagleeye Praktikant
25. oktober 2003 - 13:33 #6
Du skulle kun fjerne ' hvis sip var defineret som tal. Når det er defineret som tekst skal der ' omkring:

Så prøv:

set rs0 = conn.execute("Select Top 1 * from [counter] where sip='" & s_ip & "' order by sdate desc")
Avatar billede angelica71 Nybegynder
25. oktober 2003 - 13:42 #7
Hvilket desværre var det første jeg prøvede, men det gav desværre staddig
denne fejl ....
Microsoft OLE DB Provider for ODBC Drivers error '80040e10'

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 2.

/angelica/counter.asp, line 12
Avatar billede eagleeye Praktikant
25. oktober 2003 - 13:58 #8
Prøv at udksrive din SQL sætning i stedet for at udføre den og tjek at der er en værdi efter sip .. where sip='xxx'
Fejlen kan også skyldes at et kolonnenavn er stavet forkert så tjek kolonnenavne om de er stavet på samme måde i tabellen.
Avatar billede angelica71 Nybegynder
25. oktober 2003 - 14:06 #9
Det hjalp, nu ser det ud til at fungerer korrekt. Tusinde tak for hjælpen, og god week-end.
Avatar billede angelica71 Nybegynder
25. oktober 2003 - 14:13 #10
For at eventuelle andre skal kunne bruge dette spørgsmål til noget, må jeg vel heller lige smide den korrekte kildekode ....
<%
Option Explicit

dim conn, s_ip, s_time, rs0, rs1

set conn = Server.CreateObject("ADODB.Connection")
conn.open "Driver={Microsoft Access Driver (*.mdb)}; Dbq="&Server.MapPath("db.mdb")

s_ip = Request.ServerVariables("REMOTE_ADDR")
s_time = Now()

set rs0 = conn.execute("Select Top 1 * from [counter] where s_ip='" & s_ip & "' order by s_date desc")




if (rs0.BOF AND rs0.EOF) then
    conn.execute("INSERT INTO [counter] (s_ip, s_date) VALUES ('" & s_ip & "','" & s_time & "')")
elseif (datediff("d", rs0("s_date"), s_time) <> "0") then
    conn.execute("INSERT INTO [counter] (s_ip, s_date) VALUES ('" & s_ip & "','" & s_time & "')")
end if

rs1 = conn.execute("Select Count(*) as cnt from [counter]")

Response.Write("Antal besøgende til vidre: " & rs1("cnt"))

%>

Tælleren ligger her i en database navngivet 'db.mdb', hvilken indeholder en tabel navngivet 'counter', som indeholder
id ( Autonummerering og primær nøgle )
s_ip (tekst)
s_date (Dato og klokkeslæt)
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