0

我正在努力从 MySql 表创建饼图。

我的桌子如下

buy_trader    qty

 TKS3G  2069
 MSB1G  4417
 JKB6   4021
 FWS2   3507
 ASI1G  2578
 other  18228

我正在使用以下代码从表中生成饼图。请在这件事上给予我帮助

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Highcharts Example</title>

 <?php
 $con = mysql_connect("localhost","root","");
 if (!$con) {
 die('Could not connect: ' . mysql_error());
  }
  mysql_select_db("offlinesurv", $con);
  $result = mysql_query("SELECT * FROM top_buy_trades");
  while($row = mysql_fetch_array($result)) {
  echo $row['buy_trader'] . "\t" . $row['qty']. "\n";
  }

   mysql_close($con);
  ?> 
  <script type="text/javascript" src="js/jquery.js"></script>
  <script type="text/javascript">



 $(function () {
  var chart;
  $(document).ready(function() {
   chart = new Highcharts.Chart({
    chart: {
     renderTo: 'container',
     plotBackgroundColor: null,
     plotBorderWidth: null,
     plotShadow: false
       },
     title: {
       text: 'Top Buy Traders'
        },
        tooltip: {
         pointFormat: '{series.name}: <b>{point.percentage}%</b>',
         percentageDecimals: 1
         },
         plotOptions: {
           pie: {
           allowPointSelect: true,
           cursor: 'pointer',
           dataLabels: {
           enabled: true,
           color: '#000000',
                    connectorColor: 'green',
                    formatter: function() {
                        return '<b>'+ this.point.name +'</b>: '+ this.percentage +' %';
                    }
                }
            }
        },
        series: [{
            type: 'pie',
            name: 'Broker share',
            data: [<?php echo $row ?>]
        }]
    });
 });

});
    </script>
</head>
<body>
<script src="js/highcharts.js"></script>
<script src="js/exporting.js"></script>

<div id="container" style="min-width: 400px; height: 400px; margin: 0 auto"></div>

</body>
</html>

请帮我解决这个问题。因为我一段时间以来一直在努力解决这个问题。

请问这段代码有什么问题

4

3 回答 3

0

您不能像这样传递值。试试下面的代码,

将您的 while 循环更改为,

while($row = mysql_fetch_array($result)) {
   $traders[] = array(
      'trader' => $row['buy_trader'],
      'qty'    => $row['qty']
   );
}

然后将脚本更改为,

series: [{
            type: 'pie',
            name: 'Broker share',
            data: [
                    <?php

                      foreach($traders as $trader) {
                         echo "[".$trader['trader'].",". $trader['qty']."],";
                     }
                     ?>
            ]
        }]
于 2013-03-12T10:47:36.167 回答
0

行内容如下:

data: [<?php echo $row ?>]

不在循环中。您需要通过循环遍历整个数据库结果,从 mysql 数据中为 highcahrts 生成一系列数据。目前这将生成一行,并且由于它在 PHP 循环之外,因此它是不正确的。

它应该是这样的:

while($row = mysql_fetch_array($result)) {
  echo //more data into your series array into the JS code
}
于 2013-03-12T10:41:41.957 回答
0

请查看有关预处理数据的文章http://docs.highcharts.com/#preprocessing

于 2013-03-12T14:38:27.537 回答