【问题标题】:Highcharts - Get and plot data with MySQLi + JSON (step by step)Highcharts - 使用 MySQLi + JSON 获取和绘制数据(一步一步)
【发布时间】:2014-11-20 09:53:38
【问题描述】:

我正在尝试将一个简单的系列绘制成饼图;我的数据来自 SQL 数据库,我想将 Mysqli 查询保存在一个单独的文件中(以便在需要时动态更改我的数据系列)。我将尝试一步一步地向您描述我在做什么,如果我做错了什么,请您纠正我(我是 Highcharts 和 javascript 的新手......)。

1) MySqli 查询和json_encode:在 PHP 文件中,我使用此代码获取数据并将其转换为 JSON 格式:

$query=$mysqli->query("SELECT nickname, count(nickname) as np FROM rating limit 10");
$rows = array();
while($row = mysqli_fetch_assoc($query)) {
$rows[] = $row; }
$rowsjson = json_encode($rows, JSON_NUMERIC_CHECK); 
echo $rowsjson;
// I'm using "numeric_check" option to avoid numbers to be formatted as strings

2) 通过$.get从外部文件中获取数据:

<script src="inc/jquery.js"></script>
<script type="text/javascript">
$.get("test.php", function(ris) {
var result = JSON.parse(ris); 

var valori_array = [];
var nick_array = [];
var dati_array = [];

for (j = 0; j < 10; j++) {
// values_array[j] = parseFloat(result[j].np); 
// first attempt (getting just numeric data): it works
data_array[j] = '["' + result[j].nicktrasf + '", ' + parseFloat(result[j].np) + ']';
// second attempt (getting the whole thing, Nicknames+Numbers array): it doesn't work
}

这部分有很多问题: - 有没有一种方法可以直接使用 JSON 对象,而不必通过循环提取单个值? - 这种格式[{"nickname":"Name1","np":55},{"nickname":"Name1","np":20}] 的对象是否可用于绘制需要其他格式数据的饼图:[["Name1",55],["Name2",20]]??

3) 使用 Highcharts 绘制饼图:

$('#container').highcharts({
    title: {text: 'Pie Chart Test'},       
    series: 
    [{ 
    type: 'pie',
    name: "test",
    // data:  values_array // It works, It draws a pie without names 
    // data: [["Name1",55],["Name2",20]]   // Manually, it works
    // data:  result  // It doesn't work, obvoiusly
    // data:  ris  // It doesn't work, obvoiusly
    // data:  [data_array]     // It doesn't work
    data:  data_array  // It doesn't work... why?
    }] });

我哪里错了?我想我尝试了几乎所有的可能性,但都没有成功;当我回显它时,数组data_array似乎是正确的格式(如果我尝试手动将数组的浏览器回显剪切并粘贴到我的代码中,它可以正常工作......)。 也许我需要将我的数组转换为字符串或类似的东西? 希望有人能指出我的错误并告诉我正确的方法......

【问题讨论】:

  • 我也试过这个:var data_test = "[" + data_array + "]"; 但它也不起作用。 data_test 是一个字符串,具有 Highcarts 饼图数据所需的 EXACT 结构...它应该工作...
  • 看起来您将带有“data_array”的搅拌推入php中的数组中。这是不正确的。您需要验证点/对象数组(我的意思是结构),这将是验证 json。

标签: javascript php json mysqli highcharts


【解决方案1】:

对象和数组在 JavaScript 中关系非常密切,但 Highcharts 需要一个数组来处理绘图/可视化过程

你能不能给我们看看输出结果

&lt;?php var_dump($data_array); ?&gt;?

【讨论】:

  • 嗯...没有php变量$data_array...当我提醒js变量data_array时,结果是:["Name0", 55],["Name1", 50],["Name2", 22]等...
  • 对不起,我的意思是 rowsjson,但似乎只是缺少外部 []
  • $rowsjson 格式为[{"nickname":"Name0","np":55},{"nickname":"Name1","np":50}]
猜你喜欢
  • 1970-01-01
  • 2018-12-03
  • 1970-01-01
  • 2013-01-22
  • 1970-01-01
  • 2014-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多