WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   php fråga: lägg till unika besökare (https://www.wn.se/forum/showthread.php?t=14259)

estberg 2006-05-24 11:16

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

Staffconsulting 2006-05-24 11:46

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

estberg 2006-05-24 12:14

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.

PeterM 2006-05-24 12:17

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)");
}


estberg 2006-05-24 12:27

lysande! tack Peter!


Alla tider är GMT +2. Klockan är nu 23:41.

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