2

プロパティごとのユーザー訪問数を表示するためにハイチャートを使用しようとしていますが、これを正しく表示するための SQL クエリの設定方法がわかりません。私たちのデータベースが特定の期間中のページ訪問を単純にリストした場合は、はるかに簡単になりますが、以下に示すように、ユーザーごと、プロパティごと、訪問ごとに保存されます。

データ

プロパティごとの合計訪問数をクエリして月ごとに並べ替える必要があることはわかっていますが、これを行う最善の方法は私にはわかりません。これは私がこれまでに持っているものです:

    <?php

$con = mysql_connect('localhost', 'root', 'root');
if (!$con) {
  die('Could not connect: '.mysql_error());
}

mysql_select_db('demeure', $con);

//$date_start = $_POST['date_start'];
//$date_end = $_POST['date_end'];
$date_start = '2012-07-01 00:00:00';
$date_end = '2012-08-01 00:00:00';

$result = mysql_query("
  SELECT
    COUNT(id) AS count,
    created_at
  FROM
    user_property_visits
  WHERE
    created_at BETWEEN '$date_start' AND '$date_end'");

while ($row = mysql_fetch_array($result)) {
  echo $row['count'] . "\t" . $row['created_at']. "\n";
}

mysql_close($con);

?>

これにより、空白のページが作成されます。必要なものをどれだけ手に入れられるかわかりませんが、助けてくれてありがとう。

4

2 に答える 2

0

これが必要かどうかはわかりませんが、WHERE句でピリオドをフィルター処理できます。それが役立つかどうかを確認してください:

<?php

// Show all PHP errors.
error_reporting(E_ALL);

// Connect with MySQL
$con = mysql_connect('localhost', 'your_user', 'your_password');
if (!$con) {
  die('Could not connect: '.mysql_error());
}
mysql_select_db('demeure', $con);

// Obtain date range from $_POST or
// manually edit this.

//$date_start = $_POST['date_start'];
//$date_end = $_POST['date_end'];
$date_start = '2012-07-20 20:30:00';
$date_end = '2012-07-20 20:37:00';

// Query with GROUP BY
$result = mysql_query("
  SELECT
    COUNT(id) AS `count`,
    created_at
  FROM
    user_property_visits
  WHERE
    created_at BETWEEN '$date_start' AND '$date_end'
  GROUP BY
    created_at");

while ($row = mysql_fetch_array($result)) {
  echo 'Count: ' . $row['count'] . '<br/>' . 'Group by date: ' . $row['created_at'] . '<br/>';
}

// With the schema used in SQL Fiddle, this code will reproduce
//
// A PHP Error was encountered
// Severity: 8192
// Message: mysql_connect(): The mysql extension is deprecated and
// will be removed in the future: use mysqli or PDO instead
//
// Filename: views/home.php
//
// Line Number: 7
//
// Count: 4
// Group by date: 2012-07-20 20:36:28

mysql_close($con);

?>

これを使用すると、たとえば日付ピッカーを使用して日付範囲を選択し、POST (ajax) を介してこの値を取得できます。

この SQL フィドルを確認してください

于 2013-10-26T17:32:15.993 に答える