webForumDet fria alternativet

Räkna unika besökare

Databaser & SQL

10 svar · 410 visningar · startad av WebbisNet

Medlem sedan feb. 20032 027 inlägg
Frågan#1

Med den här koden så ska den inte spara om IP-numret finns i db men ändå räknar den alla besök, vad gör jag för fel???

bIP=Request.ServerVariables("REMOTE_ADDR")
bDate=Now()
If gbRS("gbIP") = bIP then
Response.Write " "
Else
	newPost = "INSERT INTO tblBesokare"
	newPost = newPost & "(bIP,bDate) "
	newPost = newPost & "VALUES('"& bIP &"','"& bDate &"')"

	'response.write newPost
	'response.end
	objConn.Execute(newPost)
End If
Medlem sedan maj 200010 687 inlägg
#2

Du visar inte hur du hämtar ut gbRS.
Vad körs du med för DBMS?

Medlem sedan feb. 20032 027 inlägg
#3

jag kör med mySQL

set gbRS=objConn.Execute("select distinct gbIP from tblGastbok")

Medlem sedan maj 200010 687 inlägg
#4

Du jämför IP-numret på första raden. Prova detta:

bIP = Request.ServerVariables("REMOTE_ADDR")

sql = "INSERT INTO tblBesokare(bIP, bDate)" & _
	" SELECT '" & bIP & "', NOW() FROM tblBesokare" & _
	" WHERE NOT EXISTS (SELECT 1 FROM tblBesokare WHERE bIP = '" & bIP & "')"

objConn.Execute sql
Medlem sedan feb. 20032 027 inlägg
#5

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

[MySQL][ODBC 3.51 Driver][mysqld-4.0.23a-log]You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'EXISTS (SELECT 1 FROM tblBesokare WHERE bIP = '81.233.91.8')' a

/index.asp, line 24

med

bIP=Request.ServerVariables("REMOTE_ADDR")

sql = "INSERT INTO tblBesokare(bIP, bDate)" & _
	" SELECT '" & bIP & "', NOW() FROM tblBesokare" & _
	" WHERE NOT EXISTS (SELECT 1 FROM tblBesokare WHERE bIP = '" & bIP & "')"

objConn.Execute(sql)
Medlem sedan maj 200010 687 inlägg
#6

Möjligt att man måste använda * istället för 1 i (SELECT 1 FROM tblBesokare WHERE bIP = '" & bIP & "').
Enda jag kan komma på efter att ha läst i MySQL manualen.

Medlem sedan feb. 20032 027 inlägg
#7

Erik Juhlin skrev:

Möjligt att man måste använda * istället för 1 i (SELECT 1 FROM tblBesokare WHERE bIP = '" & bIP & "').
Enda jag kan komma på efter att ha läst i MySQL manualen.

samma fel.....att det ska vara så knepigt...

Medlem sedan dec. 200012 464 inlägg
#8

Felet du får beror på att du har en gammal Mysql-version (< 4.1). Eriks metod skulle ändå inte fungera med 4.1.

Definera kolumnen bip som primärnyckel eller unique.

Flyttas från ASP

Möjligt att man måste använda * istället för 1

Nej.

Medlem sedan feb. 20032 027 inlägg
#9

verkar inte kunna ha bIP som primärnyckel

Medlem sedan dec. 200012 464 inlägg
#10

Då har du redan definierat en primärnyckel för tabellen.

Medlem sedan feb. 20032 027 inlägg
#11

SQL-fråga:

ALTER TABLE `tblBesokare` ADD PRIMARY KEY ( `bIP` )

MySQL sa: Dokumentation
#1062 - Duplicate entry '81.233.91.8' for key 1

264 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
130 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)