Kom ihåg mig?
Home Menu

Menu


php fråga: lägg till unika besökare

Ämnesverktyg Visningsalternativ
Oläst 2006-05-24, 11:16 #1
estberg estberg är inte uppkopplad
Nykomling
 
Reg.datum: Oct 2004
Inlägg: 40
estberg estberg är inte uppkopplad
Nykomling
 
Reg.datum: Oct 2004
Inlägg: 40
Hej,

Jag har ett skript på en sida som ska lägga till nya besökare i en DB för statistik genom att kolla igenom en DB-tabell efter unika IP-nummer. Gjorde en kodremsa men den lyckas inte kolla av ifall numret redan finns:


Kod:
$visitors = mysql_query("SELECT * FROM visitors") or exit(mysql_error());

$ip_array = mysql_fetch_array($visitors);

$user_ip = $_SERVER['REMOTE_ADDR'];

if ( !in_array($user_ip, $ip_array))
{
$strQuery = mysql_query("
INSERT INTO visitors
(ip)
VALUES
('" . $user_ip . "'
)");
}
Vad är det jag kan ha missat?

/S
estberg är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-05-24, 11:46 #2
Staffconsulting Staffconsulting är inte uppkopplad
Flitig postare
 
Reg.datum: May 2004
Inlägg: 358
Staffconsulting Staffconsulting är inte uppkopplad
Flitig postare
 
Reg.datum: May 2004
Inlägg: 358
Kan inte PHP med du kan ju kolla bara om jsut den IPen finns i databasen och om den inte hitatr någon post så läger du till den..

SQL koden blir då : SELECT * FROM visitors WHERE IP = xxx.xxx.xxx.xx
Staffconsulting är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-05-24, 12:14 #3
estberg estberg är inte uppkopplad
Nykomling
 
Reg.datum: Oct 2004
Inlägg: 40
estberg estberg är inte uppkopplad
Nykomling
 
Reg.datum: Oct 2004
Inlägg: 40
hm nja. jag är ganska ny på PHP men vad jag vet så går det inte att ta en if-sats eller en OR inom mysql_query SELECT strängen. annars hade det ju varit en väldigt smidig lösning.
estberg är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-05-24, 12:17 #4
PeterM PeterM är inte uppkopplad
Medlem
 
Reg.datum: Dec 2004
Inlägg: 56
PeterM PeterM är inte uppkopplad
Medlem
 
Reg.datum: Dec 2004
Inlägg: 56
Vill du enbart spara unika adresser så kan du skapa ett UNIQUE-index för fältet, sen behöver du bara köra INSERT INTO visitors (ip) VALUES ('$ip'); och behöver inte tänka på någonting mer. Finns adressen redan i tabellen så händer inget. Finns den inte så läggs den till.

Liten överkurs, räkna unika besökare per dag och använd heltalsrepresentationen av ip-adressen för att tabellens row_format ska bli "fixed".
Kod:
CREATE TABLE `visitors` (        
 `d` date NOT NULL,          
 `ip` int(10) unsigned NOT NULL,    
 `n` int(10) unsigned NOT NULL,    
 UNIQUE KEY `d-ip` (`d`,`ip`)     
)

$q = mysql_query("INSERT INTO visitors (d, ip, n) VALUES (CURDATE(), INET_ATON($ip), 1)");
if(mysql_affected_rows() != 1) {
	mysql_query("UPDATE visitors SET n = n + 1 WHERE d = CURDATE() AND ip = INET_ATON($ip)");
}
PeterM är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-05-24, 12:27 #5
estberg estberg är inte uppkopplad
Nykomling
 
Reg.datum: Oct 2004
Inlägg: 40
estberg estberg är inte uppkopplad
Nykomling
 
Reg.datum: Oct 2004
Inlägg: 40
lysande! tack Peter!
estberg är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 08:54.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017