I'm struggling to work out how to make a chart out of the data I have, heres an example.

我正在努力研究如何从我所拥有的数据中做一个图表,这是一个例子。

My Chart with dummy data should look like this:

我的虚拟数据图表应该是这样的:

function drawChart() {
    var data = google.visualization.arrayToDataTable([
    ['Month', 'Margarita Murphy', 'Lora Gonzales', 'Mario Moran', 'Wefico Local Faire', 'Zegko Collection', 'Saxux Program for Youth', 'Test New location venue'],
    ['4/12', 9, 74, 10, 8, 93, 33, 90], 
    ['5/12', 10, 168, 0, 10, 198, 108, 154], 
    ['6/12', 9, 174, 12, 12, 165, 96, 261], 
    ['7/12', 12, 288, 8, 36, 180, 264, 140], 
    ['8/12', 40, 275, 15, 30, 275, 395, 170], 
    ['9/12', 54, 534, 30, 48, 240, 246, 552], 
    ['10/12', 28, 518, 63, 28, 182, 672, 98], 
    ['11/12', 56, 520, 8, 64, 424, 568, 704], 
    ['12/12', 45, 675, 9, 63, 864, 567, 756], 
    ['1/13', 90, 570, 40, 70, 350, 510, 150], 
    ['2/13', 55, 946, 110, 55, 253, 429, 88], 
    ['3/13', 96, 684, 12, 96, 528, 1140, 468], 
    ['4/13', 52, 832, 104, 130, 1261, 1235, 663], 
    ['5/13', 28, 756, 70, 70, 1050, 910, 728], 
    ['6/13', 105, 930, 15, 60, 1440, 660, 690], 
    ['7/13', 144, 1600, 96, 64, 1312, 1488, 1120], 
]);

So as you can see it has a list of items, with how many views it has had per month going back in time.

你可以看到它有一个项目列表,每个月有多少个视图返回。

The problem I am having is when I get the data from MySQL I want to loop though the views, which would be going vertically down in the column, instead of accross. How would I go about making it go horizontal like so:

我遇到的问题是,当我从MySQL中获取数据时,我想要循环视图,而视图是垂直向下的,而不是accross。我怎么让它像这样横向移动呢

['4/12', item1.views, item2.view]
['5/12', item1.views, item2.view]

I'm getting really confused by this...

我真的很困惑。

Example Data

示例数据

-------------------
|date|views|ref_id|
|----|-----|------|
|4/12|123  |2     |
|5/12|526  |7     |
|6/12|2    |1     |
|7/12|46   |3     |
-------------------

EDIT:

编辑:

Playing around with setting the dates as variables first and then looping though everything and adding the data to the correct one?

先将日期设置为变量,然后遍历所有内容,然后将数据添加到正确的变量中?

$month4_12 = "['4/12', ";
$month5_12 = "['5/12', ";

foreach($views_data as $data){
    ${"month_$data->date"} .= $data->views . ', ';
}

$month4_12 .= "],";
$month5_12 .= "],";

EDIT2:

EDIT2:

So here's what I have now, it has a few problems though, if the views table doesn't contain a record, it doesn't count as it only goes off what it finds in the database... It no obviously doesn't work as it doesn't have the correct amount of columns compared to titles.

这是我现在所拥有的,它有一些问题,如果视图表不包含记录,它不会被计数,因为它只会在数据库中找到。它没有明显的不工作,因为它没有正确的数量的列与标题。

// Get views for chart
$views_data = $this->content_model->get_chart_view_data();

// First make the months
$month = 1;
while($month <= 16){
    $month_text = date('d/m/y');
    $month_text = strtotime($month_text . ' -'.$month.' months');
    $month_text_display = date('n/y', $month_text);
    $month_text_variable = str_replace('/', '_', $month_text_display);
    ${"month_$month_text_variable"} = "['".$month_text_display."', ";

    // Now add the data
    foreach($views_data as $row){
        ${"month_$month_text_variable"} .= $row->views . ', ';
    }
    ${"month_$month_text_variable"} = rtrim(${"month_$month_text_variable"}, ", ");

    // Finish the lines
    ${"month_$month_text_variable"} .= "],\n";

    $month++;
}

// Now join the lot!
$month = 1;
$chart_data = '';
while($month <= 16){
    $month_text = date('d/m/y');
    $month_text = strtotime($month_text . ' -'.$month.' months');
    $month_text_display = date('n/y', $month_text);
    $month_text_variable = str_replace('/', '_', $month_text_display);
    $chart_data .= ${"month_$month_text_variable"};
    $month++;
}

$data['chart_data'] = rtrim($chart_data, ",\n");

echo $data['chart_data'];

This gives the output:

这使输出:

function drawChart() {
        var data = google.visualization.arrayToDataTable([
        ['Month', 'Margarita Murphy', 'Lora Gonzales', 'Mario Moran', 'Wefico Local Faire', 'Zegko Collection', 'Saxux Program for Youth', 'Test New location venue'],
        ['7/13', 2, 1, 1],
        ['6/13', 2, 1, 1],
        ['5/13', 2, 1, 1],
        ['4/13', 2, 1, 1],
        ['3/13', 2, 1, 1],
        ['2/13', 2, 1, 1],
        ['1/13', 2, 1, 1],
        ['12/12', 2, 1, 1],
        ['11/12', 2, 1, 1],
        ['10/12', 2, 1, 1],
        ['9/12', 2, 1, 1],
        ['8/12', 2, 1, 1],
        ['7/12', 2, 1, 1],
        ['6/12', 2, 1, 1],
        ['5/12', 2, 1, 1],
        ['4/12', 2, 1, 1]
]);

EDIT 3

编辑3

Heres how the views data is stored in the database, you can see that a day with no views simply has no record

Heres如何将视图数据存储在数据库中,您可以看到没有视图的一天根本没有记录。

1 个解决方案

#1


2

You need to pivot the data in your SQL query. Since MySQL doesn't support pivots natively, you have to cheat a bit. Each pivoted column in your final output will be in this form:

您需要将数据转到SQL查询中。由于MySQL不支持主点,所以您必须稍微作弊。最终输出中的每一列都将以这种形式出现:

IF(ref_id = <this column's reference id>, views, 0) AS <column name>

and then you group by the date column, like this:

然后你按日期列,像这样:

SELECT
    data,
    IF(ref_id = 327, views, 0) AS column_327,
    IF(ref_id = 329, views, 0) AS column_329,
    // etc...
FROM <table name>
WHERE <conditions>
GROUP BY date

Then you can iterate over the output to build a DataTable object.

然后,您可以遍历输出来构建一个DataTable对象。

If you don't know all of the ref_id values ahead of time (or there are a lot of them), then you can query to get a list of ref_id's and build the query programmatically:

如果您事先不知道所有ref_id值(或者有很多这样的值),那么您可以查询获取ref_id的列表并以编程方式构建查询:

SELECT DISTINCT ref_id FROM <table name>

更多相关文章

  1. php使用openssl进行Rsa长数据加密(117)解密(128)
  2. Zend数据库适配器-未捕获异常-堆栈跟踪显示用户名和密码
  3. 在Cake PHP中更新现有的sql数据
  4. 在数据库中存储行数或动态获取
  5. 如何从databse中提取数据到2d数组中?
  6. php curl模拟登陆抓取数据
  7. 在PHP中从JSON获取数据
  8. 在CodeIgniter中包含视图的最佳方法。
  9. 自动同步vps服务器或本地文件的数据到百度网盘

随机推荐

  1. android edittext 不自动获取焦点
  2. Android警告错误搜集
  3. Android实现拍照功能实例
  4. Android Button按钮两个页面切换
  5. Android中ContentProvider和Uri用法
  6. java android 环境变量配置备忘录
  7. Android: PowerManager.WakeLock
  8. android ListView 显示在底部
  9. Android7.0中文文档(API)-- RemoteViews
  10. Android开发---为按钮添加事件的三种方法