2013-01-23 42 views
2

我有一个报告表,我只使用下面的代码来计算点击次数。如何根据日期计算唯一访问次数

// Get hits 
    $hits_query = mysql_query("SELECT COUNT(*) AS `count` FROM `reports` WHERE `stuff_id` = ".$row->id.""); 
    $fetch_hits = mysql_fetch_array($hits_query); 
    $hits = $fetch_hits['count']; 

该代码工作得很好,正是我想要的,但我现在想要的是如何获得独特的点击?

在我的报告表中,我存储了每个访问权限,因此在stuff_id上的每个用户群都有多个日志。在我的报告表中,我在每个报告中存储日期为2013年1月23日,以及每24小时从2更改为1的用户ip和stuffed

+2

请考虑使用'mysqli'或'PDO'命令为MySQL的' '命令已被弃用,不再被支持。 'mysql'命令容易受到sql注入攻击,并构成安全风险。 – War10ck

+0

我只是几乎不知道如何编码,你可以帮我吗? – user2002220

+1

[**请不要在新代码中使用'mysql_ *'函数**](http://bit.ly/phpmsql)。他们不再被维护[并被正式弃用](https://wiki.php.net/rfc/mysql_deprecation)。看到[**红框**](http://j.mp/Te9zIL)?学习[*准备的语句*](http://j.mp/T9hLWi),并使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [这篇文章](http://j.mp/QEx8IB)将帮助你决定哪个。如果你选择PDO, [这里是一个很好的教程](http://www.brightmeup.info/article.php?a_id=2)。 –

回答

0

您需要一个唯一标识用户的字段。我将假设我的例子是user_ip。更改此:

$hits_query = mysql_query("SELECT COUNT(*) AS `count` FROM `reports` WHERE `stuff_id` = ".$row->id.""); 

要这样:

$hits_query = mysql_query("SELECT COUNT(DISTINCT `user_ip`) AS `count` FROM `reports` WHERE `stuff_id` = ".$row->id.""); 

注: MySQL库将被弃用的PHP 5.5和PHP在未来的版本中删除。开始规划远离它的迁移是一个好主意。

+0

你不需要合并日期从我的理解这将得到明确的基础上的IP,但我认为任何命中一次在24小时内作为唯一 – user2002220

+0

所有你需要做的是按日期添加一个组。它会为您显示每24小时独特的访客。从那里你可以总结总数。 – datasage

+0

我的好朋友,我不知道如何做,因为我存储日期如01-23-2013我应该改变它吗? – user2002220

0

,你可以这样做:

$hits_query = mysql_query("SELECT COUNT(DISTINCT `user_ip`) AS `count` FROM `reports` WHERE `stuff_id` = ".$row->id.""); 

或者,如果你想要一个独特的反应,你可以这样做:

$user-IP = "Put here the ip adress of the user that you want"; 
$hits_query = mysql_query("SELECT COUNT(*) AS `count` FROM `reports` WHERE `user_ip` = ".$user-IP."");