0

我被困在从 mysql 数据库到 HighCharts 的数据连接中

highchart.js代码如下

            <script type="text/javascript">
    $(function () {
        var chart;
        $(document).ready(function() {
            chart = new Highcharts.Chart({
                chart: {
                    renderTo: 'container5',
                    plotBackgroundColor: null,
                    plotBorderWidth: 2,
                    plotShadow: false
                },
                title: {
                    text: '<p><?php echo $chart5; ?></p>'
                },
                // tooltip: {
                    // pointFormat: '{series.name}: <b>{point.percentage}%</b>',
                    // percentageDecimals: 1
                // },
               plotOptions: {
                    pie: {
                        allowPointSelect: true,
                        cursor: 'pointer',
                        dataLabels: {
                            enabled: false
                        },
                        showInLegend: true
                    }
                },


                    xAxis: {
             categories: [<?php echo "'".implode("','",$data)."'"; ?>]
          },
          series: [{
           type: 'pie',
             data: [<?php echo implode(",",$data1);  ?>] 

                }]
            });
        });

    });

        </script>

和我的database.php

            $data = array();
        $sql = "SELECT x_axis FROM licence_chart ";
         $result9 = mysql_query($sql);
                $data9 = array();
                while ($row = mysql_fetch_array($result9)) {
                   $data9 = $row['x_axis'];
                   $data[] = $data9;
                }

        $data1 = array();
        $sql = "SELECT y_axis FROM licence_chart ";
         $result10 = mysql_query($sql);
                $data10 = array();
                while ($row = mysql_fetch_array($result10)) {
                   $data10 = $row['y_axis'];
                   $data1[] = $data10;
                }

                echo "'".join("','",$data)."'";
                echo join(",",$data1);

当我在 localhost 中运行此代码时,饼图x-axies 会显示,但未显示值,但值显示正确,Slicey-axies值显示正确,

licence_chart表中这样的表数据中x_axiesy_axies是列

x_axies{crome,opera,ie,firefox,safari}
y_axies{0.12,0.23,23.2,56.2,2}

我想在highchart.js文件中的data[] 数据会像这样

['safari',10], ['firefox',1.5],['即',0.5]

所以我在文件中做错了什么请告诉我并更正我的代码database.phphighchatr.js

4

3 回答 3

1

上述问题的正确答案,我正在使用它并获得上述格式

<php
    $sql = "SELECT x_axis,y_axis FROM licence_chart ";
    $result9 = mysql_query($sql);
    $data9 = array();
    while ($row = mysql_fetch_array($result9)) 
        {
            $data9 = "'".$row['x_axis']."'".",".$row['y_axis'];
            $data[] = $data9;
        }   
    for($ii=0;$ii<count($data);$ii++)
        {
            echo "[".$data[$ii]."]," ;  
        }   
?> 
于 2012-12-21T06:04:17.903 回答
0
<?php

// Set the JSON header header("Content-type: text/json"); // The x value is the current JavaScript time, which is the Unix time multiplied by 1000. $x = time() * 1000; // The y value is a random number $y = rand(0, 100); // Create a PHP array and echo it as JSON $ret = array($x, $y); echo json_encode($ret); ?>

这是来自 HIGHCHARTS 安装说明的答案

于 2012-12-21T06:14:31.127 回答
0

就像错误所说: http ://www.highcharts.com/errors/14

Highcharts 错误 #14 字符串值发送到 series.data,预期数字

如果您将字符串作为数据点传递,就会发生这种情况,例如在这样的设置中:

系列:[{数据:[“3”,“5”,“1”,“6”]}]

Highcharts 期望数据值是数字。最常见的原因是数据是从 CSV 或 XML 源解析的,而实现者忘记对解析的值运行 parseFloat。

出于性能原因,不执行内部类型转换,并且只检查第一个值(从 2.3 开始)。

你的问题是你的echo join($data1, "','");。yAxis 值不能是字符串。看起来你只是得到一个巨大的字符串:

'Safari','Opera','Firefox','IE','Chrome','Others10','6','40.5','20','10.6','0.5

通过执行此连接操作,您将在 yAxis 数字周围添加单引号。简单地说:

echo join($data1, ",");

这应该可以解决您的部分问题。如果您阅读了错误页面,您会看到这一点 - 不是敲你,但 HighCharts 有非常棒的文档和错误报告。

为了以正确的形式获得它,您还需要使用 [name, yValue] 制作不同的系列元素。你所拥有的只是 [name, name, name,...., yVal, yVal, yVal..] 的字符串。

如何解析?真的取决于你。但是为什么不直接做一个SELECT '[''' + x_axis + '',' + CONVERT(VARCHAR(10), y_axis) + ']' FROM licence_chart然后做一个这样的连接:

echo join($data1, ",");

这应该会给你(不确定关于用数字进行文本连接的 mySQL 语法,所以我把它留给你。这是在 MS SQL 中):

['Safari', 6], ['Opera', 40.5], ['Firefox', 20], ['IE', 10.6], ['Chrome', 0.5], ['Others10', <some number...looks like it got cut off in your question>]
于 2012-12-19T17:15:13.410 回答