iT邦幫忙

0

google chart 與 php + ajax 串接問題?

更新問題

谷歌 chart 問題
官方文件 https://google-developers.appspot.com/chart/interactive/docs/gallery/columnchart

$.getJSON('XXX&m=' + m, function(json) {
      var data = new google.visualization.DataTable(json);
      data.addColumn('string', '');
      data.addColumn('number', '');
      data.addRows(json);
      console.log(json);

php

$chartData = $pdo->query(
      "SELECT DISTINCT
        FROM_UNIXTIME(add_time, '%m/%d') as add_time,
        count(view_id) as viewTime
      FROM `view`
      GROUP BY `add_time` "
    );

    foreach ($chartData as $key) {

        if (substr($key['add_time'] ,0 ,2) == $_GET['m']) {

          $data[] = array(
            $key['add_time'], (int) $key['viewTime']
          );
        }

    }

    echo json_encode($data ,JSON_UNESCAPED_SLASHES);

我每一筆 view 都有一個 add_time 時間戳
我上面是把時間戳轉換為 mm/dd 格式,然後再透過 $_GET['m'] 帶來的日期,例如 05

output
[["11/01",1],["11/02",1],["11/03",1],["11/05",1]]

但其實 11/01 ,11/02, 11/03, 11/05 都是多筆的
透過 count(view_id) as viewTime 算出來都是一筆~
所以我想不到怎麼算出每個日期共有幾筆?

犬千賀 iT邦新手 3 級 ‧ 2018-11-07 09:36:28 檢舉
https://ithelp.ithome.com.tw/questions/10190592 這跟你之前的問題一樣喔
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

2
淺水員
iT邦大師 6 級 ‧ 2018-11-06 00:55:49
最佳解答

這問題好像跟 google chart 無關
只是資料庫查詢語法的問題

$chartData = $pdo->query(
    "SELECT DISTINCT
        FROM_UNIXTIME(add_time, '%m/%d') as add_date,
        count(view_id) as viewTime
    FROM `view`
    GROUP BY `add_date` "
);

as add_time改成as add_date
並把GROUP BY add_time改成GROUP BY add_date
以避免資料庫用原本的「add_time」欄位做 GROUP

火爆浪子 iT邦研究生 1 級 ‧ 2018-11-06 12:09:08 檢舉

哇,這太酷了
這是什麼原理?確實把 add_time GROUP BY 會讓每個資料都是一筆一筆...
但照你這樣做就可以了

淺水員 iT邦大師 6 級 ‧ 2018-11-06 12:33:01 檢舉

因為 FROM_UNIXTIME 前後都叫做 add_time
這樣不知道 GROUP BY 是針對 FROM_UNIXTIME 前還是後的

如果是針原本的 add_time
那麼必須有相同的 timestamp 才會算在一起
而不是相同的日期

為了避免這樣的狀況
把後面的名稱換一下就好了

我要發表回答

立即登入回答