FAQ |
Kalender |
![]() |
#1 | ||
|
|||
Nykomling
|
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 . "' )"); } /S |
||
![]() |
![]() |
![]() |
#2 | ||
|
|||
Flitig postare
|
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 |
||
![]() |
![]() |
![]() |
#3 | ||
|
|||
Nykomling
|
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.
|
||
![]() |
![]() |
![]() |
#4 | ||
|
|||
Medlem
|
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)"); } |
||
![]() |
![]() |
![]() |
#5 | ||
|
|||
Nykomling
|
lysande! tack Peter!
|
||
![]() |
![]() |
Svara |
|
|