首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Highcharts PHP JSON -正确的数据格式

Highcharts PHP JSON -正确的数据格式
EN

Stack Overflow用户
提问于 2014-01-04 16:07:12
回答 1查看 15.5K关注 0票数 0

Highcharts/PHP/JS菜鸟在这里。我在格式化输入Highcharts所需的数据数组($data)时遇到问题。嵌入的php代码输出以下格式的日期时间/十进制数据数组

代码语言:javascript
复制
[1388680500000, 11215], [1388680800000, 11334], [1388681100000, 11487], [1388681400000, 11600], [1388681700000, 11641], [1388682000000, 11648], [1388682300000, 11692], [1388682600000, 11641], [1388682900000, 11715], [1388683200000, 11808], [1388683500000, 11845], [1388683800000, 11813], [1388684100000, 11771], [1388684400000, 11746], [1388684700000, 11808], [1388685000000, 11784], [1388685300000, 11727], [1388685600000, 11608], [1388685900000, 11648], [1388686200000, 11587], [1388686500000, 11555], [1388686800000, 11596], [1388687100000, 11541], [1388687400000, 11441], [1388687700000, 11393], [1388688000000, 11340], [1388688300000, 11152], [1388688600000, 11031], [1388688900000, 10920], [1388689200000, 10681], [1388689500000, 10221], [1388689800000, 9895]

我目前正在将此数据(在[]中)手动复制到series: data: field中,它成功地生成了图表(见下文)。我尝试用序列[{ data:[] ]替换数据字段,但是图表不再创建。(根据http://www.highcharts.com/docs/working-with-data/preprocessing-data-from-a-database)

我还在php和JS中尝试了多次json_encode($data)的迭代,但都无济于事。如果有人能向我展示php输出到Highcharts数据字段的准确翻译,最好是使用JSON,我将非常感激。

代码语言:javascript
复制
<!DOCTYPE html>
<html>
<head>
<title></title>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script src="http://code.highcharts.com/highcharts.js"></script>
<script src="http://code.highcharts.com/modules/exporting.js"></script>

    <?php
        //the usual stuff 
        error_reporting(-1);

         $con = mysql_connect("localhost","root","");

        if (!$con) {
          die('Could not connect: ' . mysql_error());
        }

        mysql_select_db("test", $con);

        $result = mysql_query("SELECT unix_timestamp(DATETIMES), TEST FROM PT");

        $data = array();

        while ($row = mysql_fetch_array($result)) {  
        extract($row);
        $row[0]=1000*$row[0];
        $data[] = "[$row[0], $row[1]]";
        }

        mysql_close($con);
        echo join($data, ', ');
    ?>



<script>
$(function() {
    Highcharts.setOptions({
        chart: {
            backgroundColor: 'rgba(255, 255, 255, .9)',
            borderWidth: 2,
            plotBackgroundColor: 'rgba(255, 255, 255, .9)',
            plotShadow: true,
            plotBorderWidth: 1
        }
    });

    var chart1 = new Highcharts.Chart({
        chart: {
            renderTo: 'container',
        },

        xAxis: {
            type: 'datetime'
        },

        series: [{
            data: [[1388680500000, 11215], [1388680800000, 11334], [1388681100000, 11487], [1388681400000, 11600], [1388681700000, 11641], [1388682000000, 11648], [1388682300000, 11692], [1388682600000, 11641], [1388682900000, 11715], [1388683200000, 11808], [1388683500000, 11845], [1388683800000, 11813], [1388684100000, 11771], [1388684400000, 11746], [1388684700000, 11808], [1388685000000, 11784], [1388685300000, 11727], [1388685600000, 11608], [1388685900000, 11648], [1388686200000, 11587], [1388686500000, 11555], [1388686800000, 11596], [1388687100000, 11541], [1388687400000, 11441], [1388687700000, 11393], [1388688000000, 11340], [1388688300000, 11152], [1388688600000, 11031], [1388688900000, 10920], [1388689200000, 10681], [1388689500000, 10221], [1388689800000, 9895]],
            pointStart: 0,
            pointInterval: 3600 * 1000 // one hour
        }]
    });
});
</script>

</head>
<body>

<div id="container" style="height: 300px"></div>

</body>
</html>

编辑:

我已经将脚本重新调整为以下格式,但是图表根本不再绘制...我确信JSON格式是正确的。请帮帮我!

代码语言:javascript
复制
<!DOCTYPE HTML>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>Highcharts Example</title>
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
        <script type="text/javascript">
        $(document).ready(function() {
            var options = {
                chart: {
                    renderTo: 'container',
                    type: 'line',
                    marginRight: 130,
                    marginBottom: 25
                },
                title: {
                    text: 'test',
                    x: -20 //center
                },
                subtitle: {
                    text: '',
                    x: -20
                },
                xAxis: {
                    categories: []
                },
                yAxis: {
                    title: {
                        text: 'Amount'
                    },
                    plotLines: [{
                        value: 0,
                        width: 1,
                        color: '#808080'
                    }]
                },
                tooltip: {
                    formatter: function() {
                            return '<b>'+ this.series.name +'</b><br/>'+
                            this.x +': '+ this.y;
                    }
                },
                legend: {
                    layout: 'vertical',
                    align: 'right',
                    verticalAlign: 'top',
                    x: -10,
                    y: 100,
                    borderWidth: 0
                },
                series: []
            }

            $.getJSON("data.php", function(json) {
                options.xAxis.categories = json['category'];
                options.series[0].name = json['name'];
                options.series[0].data = json['data'];
                chart = new Highcharts.Chart(options);
            });
        });
        </script>
        <script src="http://code.highcharts.com/highcharts.js"></script>
        <script src="http://code.highcharts.com/modules/exporting.js"></script>
    </head>
    <body>
        <div id="container" style="min-width: 400px; height: 400px; margin: 0 auto"></div>
    </body>
</html>
EN

回答 1

Stack Overflow用户

发布于 2014-01-04 17:58:52

尝试使用下面的代码从MYSQL获取记录并将其转换为highchart数据。

setup.js

代码语言:javascript
复制
    var chart;
    $(document).ready(function() {
        var cursan = {
            chart: {
                renderTo: 'current_sanand',
                defaultSeriesType: 'area',
                marginRight: 10,
                marginBottom: 20
            },
            title: {
                text: '',
            },
            subtitle: {
                text: '2013/14',
            },
            xAxis: {
                categories: ['Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec', 'Jan', 'Feb', 'Mar']
            },
            yAxis: {
                title: {
                    text: 'Amount [Billion]'
                },
                plotLines: [{
                    value: 0,
                    width: 1,
                    color: '#808080'
                }]
            },
            tooltip: {
                crosshairs: true,
                shared: true
            },
            legend: {
                layout: 'vertical',
                backgroundColor: 'white',
                align: 'right',
                verticalAlign: 'top',
                y: 35,
                x: -10,
                borderWidth: 1,
                borderRadius: 0,
                title: {
                    text: '::::::::::::'
                },
                floating: true,
                draggable: true,
                zIndex: 20

            },

            plotOptions: {

                series: {
                    cursor: 'pointer',  
                    marker: {
                        lineWidth: 1
                    }
                }
            },

            series: [{
                color: Highcharts.getOptions().colors[2],
                name: 'Sanand',
                marker: {
                    fillColor: '#FFFFFF',
                    lineWidth: 2,
                    lineColor: null // inherit from series
                },
                dataLabels: {
                    enabled: true,
                    rotation: 0,
                    color: '#666666',
                    align: 'top',
                    x: -10,
                    y: -10,
                    style: {
                        fontSize: '9px',
                        fontFamily: 'Verdana, sans-serif',
                        textShadow: '0 0 0px black'
                    }
                }
            }],

      }


     $.getJSON("data.php", function(json){
            options.xAxis.categories = json['category'];
            options.series[0].name = json['name'];
            options.series[0].data = json['data'];
            chart = new Highcharts.Chart(options);
     });

});

data.php

$con =mysql_connect(“本地主机”,“根”,"");

代码语言:javascript
复制
    if (!$con) {
      die('Could not connect: ' . mysql_error());
    }

    mysql_select_db("test", $con);
    $sql = mysql_query("SELECT unix_timestamp(DATETIMES), TEST FROM PT");
    $result['name'] = 'Sales Summary';
    while($r = mysql_fetch_array($sql)) {
    $datetime = $r['inv_dt'];
    $result['category'][] = $datetime;
    $result['data'][] = round($r['amount'],2) ;
}
print json_encode($result);

index.php

代码语言:javascript
复制
 <html>
    <body>
       <div id="container" style="height: 300px"></div>
    </body>
 </html>

我尽了最大的努力,这个方法工作正常。试试看。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20918561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档