1

Web サイトが 1 日あたりに取得するビュー数のGoogle 折れ線グラフを作成しようとしています。これを行う方法がよくわかりません。

すべてを機能させるコードは次のとおりです。

<html>
<head>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
  google.load("visualization", "1", {packages:["corechart"]});
  google.setOnLoadCallback(drawChart);
  function drawChart() {
    var data = google.visualization.arrayToDataTable([
      ['Year', 'Sales', 'Expenses'],
      ['2004',  1000,      400],
      ['2005',  1170,      460],
      ['2006',  660,       1120],
      ['2007',  1030,      5412]
    ]);

    var options = {
      title: 'Company Performance'
    };

    var chart = new google.visualization.LineChart(document.getElementById('chart_div'));
    chart.draw(data, options);
  }
</script>

ここで、これを変更して、Web サイトの 1 日あたりの合計ビュー数をリストし、それを Web サイトの 1 日あたりの固有のビュー数と比較します。

クエリは次のようになります。

$total = mysql_query("SELECT id, userID, ip, date FROM views WHERE userID!='1'");
$unique = mysql_query("SELECT id, userID, ip, date FROM views GROUP BY ip");
4

1 に答える 1

0

合計が間違っています。1 日あたりに取得するには、次のようにする必要があります

SELECT count(*) as nr, date FROM views WHERE userID!='1' GROUP BY date

あなたのユニークビジター数を計算するのは簡単ではありません。クエリで使用するビューを作成します。ビューは次のようになります

SELECT count(*) as nr, data, ip FROM views WHERE userID!='1' GROUP BY date, ip ORDER BY date

上のビューに unique_views という名前を付けたとしましょう。nr 列は実際には使用されませんが、他の目的のためにあると便利です。

あなたがすべきユニークな訪問者を取得するには

SELECT count(*), date FROM unique_views GROUP BY date ORDER BY date

上記のクエリは両方とも同じテーブルに基づいているため、同じ数のレコードを持つ必要があります。したがって、両方を実行すると、次のことができるはずです。

$total_per_day = mysql_query("SELECT count(*) as nr, data, ip FROM views WHERE userID!='1' GROUP BY date, ip ORDER BY date");
$unique_per_day = mysql_query("SELECT count(*) as nr, date FROM unique_views WHERE userID!='1' GROUP BY date ORDER BY date");

その後、次のことができます

for($i=0;$i<count($total_per_day);$i++) {
   $result[] = "['" . $total_per_day[$i]["date"] . "'," . $total_per_day[$i]["nr"] . "," . $unique_per_day[$i]["nr"] . "]"
}
$str = implode(",", $result);
于 2012-12-27T05:59:53.133 に答える