2013-01-23 83 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."");