2017-10-06 5 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. 

問題の原因がわかりません。 、助けてください:(あなたはSを逃している

+1

Googleアナリティクス(または他のアナリティクス)を使用することができます。実装するのがはるかに簡単です(基本的にはスニペットをコピーして貼り付けます)。サーバーを強制終了しません。 あなたの質問に答えるには:私はあなたが複雑すぎると思っています。グループ別に日付別に簡単なクエリを作成し、今日の訪問者数を取得しました。 –

+0

あなたのデータベースに仕事をさせてください。 $ table_nameのIP_ADDRESSはdate> $ yesterdayです)。このコードは、有意義な数の訪問者がいる場合、すぐにazを実行するまでに時間がかかります。 –

+0

まあ、それはちょうど実験です、私は実際に私のウェブサイトに実装されるつもりはない、私は自分のウェブサイトに訪問者の数を追加し、そうする方法を見つけるしたいです。あなたのGoogleアナリティクスのアドバイスのために@SzántóZoltánありがとうございました:) – Polda18

答えて

1

!あなたは$visitors_start_countにデータを埋めるが、数えるときに$visitor_start_count(ビジター _start_count)を使用している。一般的には

、しかし、私がお勧めしますあなたのデータベースに重労働をさせ、正しい行(今日、先週、初めから)とGROUP BYの日付とIPアドレスを検索する条件を使用するSELECTを使用します。

+0

はい、それは事でした:Dは忘れられた '秒':Dありがとう:) – Polda18

関連する問題