Hej.. Så här då kanske? Du borde ha ett antal fält för varje adress. Öka det med ett. Då tappar han ju informationen om när besöken har vart. Eller de kanske han inte önskar att veta heller?Besöksräknare med ip logg som bara uppdateras varje timma..
Jag undrar hur man ska göra för att en besökares ip bara ska räknas en gång/timma i besöksräknaren..
Jag har skrivit ihop ett litet script men jag får bara felmeddelandet
Microsoft VBScript runtime error '800a005e'
Invalid use of Null: 'CDate'
/warta/default2.asp, line 144
Men i databasen så finns det datum i alla fälten..
Fast i vissa står det bara t.ex. 01/01/2001 och inget klockslag kan det vara det som är fel??
Jag använder access och databaskopplingen till databasen ligger i db.asp..
Fälten i databasen är
ID = räknare & premiernyckel
IP = text
Datum = Datum/Tid
Här nere följer scriptet..
<%
Dim Conn, RecSet, SQL,IP,sDate,LaggTill
Set Conn = Server.CreateObject (”ADODB.Connection”)
Set RecSet = Server.CreateObject (”ADODB.RecordSet”)
%>
<!-- #include file=”db.asp” -->
<%
IP = Request.ServerVariables(”REMOTE_ADDR”)
SQL = ”SELECT * FROM raknare WHERE IP = ’” & IP & ”’”
RecSet.Open SQL, Conn, 3, 3
’Om IP-nummret finns i databasen
IF NOT RecSet.EOF THEN
’så kollar vi om det var mer än en timme sedan
sDate=CDate(RecSet(”Datum”))
IF sDate+1/24 < NOW THEN LaggTill = true
EN DIF
IF RecSet.EOF OR LaggTill THEN
RecSet.AddNew
RecSet(”IP”) = Request.ServerVariables(”REMOTE_ADDR”)
RecSet(”Datum”) = NOW
END IF
’ett datum plus ett = datumet + en dag så datum + 1/24 = datumet + en timme
’eftersom det är 24 timmar på ett dygn.
’så om datumet +1 timme är mindre än now så har det gåt en timme.
’Hoppas jag iaf.. (det är rätt sent nu)
RecSet.Update
’Fråga om i databasen (ska vara ett bra sätt att få koden att vänta tills
’uppdateringen är klar
RecSet.Requery
response.write ”<tr>”
<b><% response.write RecSet(”ID”) %></b> besök
response.write ”</td></tr>”
%>
Tack på förhand..
//El MarSv: Besöksräknare med ip logg som bara uppdateras varje timma..
<code>
SQL = "SELECT * FROM raknare WHERE IP = '" & IP & "'"
RecSet.Open SQL, Conn, 3, 3
IF RecSet.EOF = FALSE THEN
IF DateDiff("h",RecSet("Datum"),Now()) > 1 THEN
LaggTill = true
END IF
END IF
IF RecSet.EOF OR LaggTill = True THEN
RecSet.AddNew
RecSet(”IP”) = Request.ServerVariables(”REMOTE_ADDR”)
RecSet(”Datum”) = NOW
RecSet.Update
END IF
</code>Sv: Besöksräknare med ip logg som bara uppdateras varje timma..
<code>
<%
Dim Conn, RecSet, strSQL,IP,sDate,LaggTill
Set Conn = Server.CreateObject (”ADODB.Connection”)
%>
<!-- #include file=”db.asp” -->
<%
IP = Request.ServerVariables(”REMOTE_ADDR”)
strSQL = "SELECT Datum FROM raknare WHERE IP = '" & Replace(IP, "'", "''") & "'"
Set RecSet = Server.CreateObject (”ADODB.RecordSet”)
RecSet.Open SQL, Conn
If RecSet.EOF Then 'Om IP-nummret finns i databasen
Conn.Execute "INSERT INTO raknare (IP, Datum, Antal) VALUES ('" & Replace(IP, "'", "''") & "', #" & Now() & "#, 1)"
ElseIf RecSet("Datum") > DateAdd("h", -1, Now) Then 'Kollar om det var mer än en timme sedan
Else
Conn.Execute "UPDATE raknare SET Datum = #" & Now() & "#, Antal = Antal + 1 WHERE IP = '" & Replace(IP, "'", "''") & "'"
End If
RecSet.Close
strSQL = "SELECT Sum(Antal) AS TotaltAntal FROM raknare"
RecSet.Open SQL, Conn
response.write ”<tr>”
response.write RecSet("TotaltAntal") & " besök"
response.write ”</td></tr>”
RecSet.Close
Set RecSet = Nothing
Conn.Close
Set Conn = Nothing
%>
</code>Sv: Besöksräknare med ip logg som bara uppdateras varje timma..