Chtěl jsem aby se návštěva z jedné IP počítala jen jednou denně.
Moje řešení níže umí počítat celkový počet návštěv (z jedné IP jedna denně) a počet návštěv v aktuální den (opět z jedné IP jedna denně)
Tabulka SQL
SET NAMES utf8;
SET SQL_MODE='';
USE `counter`;
DROP TABLE IF EXISTS `items`;
CREATE TABLE `items` (
`ip` varchar(254) NOT NULL DEFAULT '',
`day` tinyint(5) DEFAULT '0',
PRIMARY KEY (`ip`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `counts`;
CREATE TABLE `counts` (
`id` int(11) DEFAULT '0',
`count_all` int(11) UNSIGNED DEFAULT '0',
`count_today` int(11) UNSIGNED DEFAULT '0',
`day_today` tinyint(5) DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
PHP<?
$spojeni = mysql_connect("127.0.0.1","root","root" ) or die ('<strong>Critical error!</strong><br>Nepodarilo se pripojit k databazi!');
mysql_select_db("název databáze", $spojeni) or die ('Spatne zadana databaze v db.php');
mysql_query("SET character_set_client=utf8");
mysql_query("SET character_set_connection=utf8");
mysql_query("SET character_set_results=utf8");
mysql_query("set names 'utf8'");
$ip_now = getenv('REMOTE_ADDR');
$day_now = date("d" ,time());
$query = mysql_query("SELECT `day_today` FROM `visits_counts` WHERE `id` = '1' LIMIT 1;");
$day_today = mysql_result($query, 0);
if($day_today != $day_now)
{
mysql_query("UPDATE `visits_counts` SET `count_today` = '0' WHERE `id` = '1' ;");
mysql_query("UPDATE `visits_counts` SET `day_today` = '$day_now' WHERE `id` = '1' ;");
}
$query2 = mysql_query("SELECT * FROM `visits_items` WHERE `ip` = '$ip_now' ;");
$row= mysql_fetch_array($query2);
if ($row == 0)
{
mysql_query("INSERT IGNORE INTO `visits_items` VALUES ('$ip_now', '$day_now') ;");
mysql_query("UPDATE `visits_counts` SET `count_all` = `count_all` + '1' WHERE `id` = '1' ;");
mysql_query("UPDATE `visits_counts` SET `count_today` = `count_today` + '1' WHERE `id` = '1' ;");
}
else
{
if ($row['day'] != $day_now)
{
mysql_query("UPDATE `visits_items` SET `day` = '$day_now' WHERE `id` = '$row[ip]' ;");
mysql_query("UPDATE `visits_counts` SET `count_all` = `count_all` + '1' WHERE `id` = '1' ;");
mysql_query("UPDATE `visits_counts` SET `count_today` = `count_today` + '1' WHERE `id` = '1' ;");
}
}
if ($day_now >= 3)
{
mysql_query("DELETE * FROM `visits_items` WHERE `day` > '$day_now' ;");
$day_x = $day_now - 3;
mysql_query("DELETE * FROM `visits_items` WHERE `day` < '$day_x' ;");
}
$query3 = mysql_query("SELECT `count_all`,`count_today` FROM `visits_counts` WHERE `id` = '1' ;");
$visits = mysql_fetch_array($query3);
print "Návštěvy dnes: ".$visits[0]."<br />Návštěvy celkem:".$visits[1]."</div>"."\n";
?>