2017-10-06 21 views
0

我想在我的网站上创建访问者计数器,因此我试验了MySQL数据库并根据IP地址和访问日期对访问者进行计数(每天统计相同的IP地址作为新访客)。计数器具有今天的部分(仅计算当日访问者数量),另一部分计入来自网站发布的访问者(或确切地说是启动计数器)。但是,只有今天的部分工作。基于MySQL数据库的访问者计数器工作的一半

从数据库中获得的访客数据(IP地址,日期和时间的使用):

// Get data from database 
$query_get_data = "select ip_address, access_date_time from $table_name;"; 

$mysql_conn = mysqli_connect('localhost', 'root', '', $db_name); 
if(!$mysql_conn) { 
    die("<strong>ERROR WHILE ACCESSING DATABASE `$db_name`!!!</strong>"); 
    // access the database was unsuccessful 
} 

$query = mysqli_query($mysql_conn, $query_get_data); 
if(!$query) { 
    die("<strong>ERROR WHILE FETCHING DATA FROM TABLE `$table_name` IN DATABASE `$db_name`!!!</strong>"); 
} 

计数从采集的数据的用户:

if(mysqli_num_rows($query) > 0) { 
    while($row = mysqli_fetch_assoc($query)) { 
     if(isset($visitors_start_count[$row['ip_address'] . ' IN DATE ' . trim(explode(",", $row['access_date_time'])[0])])) { 
      ++$visitors_start_count[$row['ip_address'] . ' IN DATE ' . trim(explode(",", $row['access_date_time'])[0])]; 
     } else { 
      $visitors_start_count[$row['ip_address'] . ' IN DATE ' . trim(explode(",", $row['access_date_time'])[0])] = 1; 
     } 

     if(trim(explode(",", $row['access_date_time'])[0]) == trim(explode(",", $date_time)[0])) { 
      if(isset($visitors_today_count[$row['ip_address']])) { 
       ++$visitors_today_count[$row['ip_address']]; 
      } else { 
       $visitors_today_count[$row['ip_address']] = 1; 
      } 
     } 
    } 
} 

计数参观总人数:

$visitors_num_start = 0; 
$visitors_num_today = 0; 

foreach($visitor_start_count as $counter) { 
    ++$visitors_num_start; 
} 

foreach($visitors_today_count as $counter) { 
    ++$visitors_num_today; 
} 

这是我的输出:

Today is Fri Oct 6th 2017. 

You are the 1st visitor today here and 0th from websites launch. 

我找不到妨碍整体工作的问题。请帮助:(

+1

对于这种类型的东西可以使用谷歌分析(或任何其他分析),它更容易实现(基本上你复制粘贴一段代码),并不会杀死你的服务器。 要回答你的问题:我认为你过于复杂的事情,创建一个简单的查询,按日期分组,并有今天的日期,你有今天的访问者数 –

+0

让你的数据库做的工作 - 从选择计数(*)来自$ table_name的IP_ADDRESS,其中日期> $昨天)。如果您有任何有意义的访问者数量,此代码将需要很长时间才能运行。 –

+0

嗯,这只是实验,我从来没有说过它会在我的网站中实际实现,只是我希望将访问者数量添加到我的网站并找到方法来实现。谢谢@SzántóZoltán提供Google Analytics(分析)建议,同时看看:) – Polda18

回答

1

你错过了一个s!你是填充数据为$visitors_start_count但随后计数时使用$visitor_start_count(游客小号 _start_count)。

总的来说,虽然,我会建议让您的数据库完成繁重的工作,并使用SELECT来使用条件来查找正确的行(今天,上周,从开始时起)和GROUP BY日期和IP地址。

+0

是的,就是这样的事情:D该死的忘记''D:谢谢:) – Polda18

相关问题