Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Počítadlo přístupů na web

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

?>

Reakce na odpověď

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny