- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在寻找一个循环,它可以从 MySQL 结果集中检索具有未知数量的列和行的数据,并将其放入 GViz 格式。使用以下代码,我可以动态读取数据,但无法将其转换为 Google Visualization API 所需的格式:
$cols = array();
$row = array();
$i = 0;
while ($i < mysql_num_fields($result)) {
$meta = mysql_fetch_field($result, $i);
if (!$meta) {
echo "No information available<br />\n";
}
$cols[]= "{id: '".$i."', label: '".$meta->name."', type: '".$meta->type."'}";
$i++;
}
while($r = mysql_fetch_assoc($result)) {
$row[]= $r;
}
$jsonTable = json_encode($cols);
$jsonTable2 = json_encode($row);
$Table3 = "{cols: {$jsonTable}, rows: $jsonTable2}";
echo $jsonTable;
echo '<br>';
echo $jsonTable2;
echo '<br>';
echo $Table3;
echo '<br>';
我在 Debug模式下从浏览器得到的 JS 错误是:
Error: Invalid type, {[id= '0', label= 'mon', type= 'string']}, for column "0".
我看过data parameter在谷歌文档上,但他们的数据一如既往地是硬编码的。和this SO -page 不会动态生成列和行。
我很高兴获得有关正确获取数据参数的任何帮助。谢谢!
最佳答案
您看到的错误原因是您的 JSON 字符串构造错误。不要尝试自己构建它们,在 PHP 中构建数组要容易得多,并允许 json_encode 函数为您处理困难的部分。
您可以将 MySQL 中的数据解析为 DataTable,如下所示:
$data = array(
'cols' => array(),
'rows' => array()
);
for ($i = 0; $i < mysql_num_fields($result), $i++) {
$meta = mysql_fetch_field($result, $i);
if (!$meta) {
echo "No information available<br />\n";
}
$data['cols'][] = array(
'type' => ($i == 0) ? 'string' : 'number',
'label' => $meta->name,
'id' => $i
);
}
while($r = mysql_fetch_assoc($result)) {
$temp = array();
foreach ($data['cols'] as $col) {
$temp[] = array('v' => $r[$col['label']]);
}
$data['rows'][] = array('c' => $temp);
}
echo json_encode($data, JSON_NUMERIC_CHECK);
关于php - 柱形图的动态数据表创建(列和行未知),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25122801/
我想 reshape pandas 数据框, 我有这种格式的 csv 文件 #Result;ID;Date;Events;type 12;1240422;10/01/2017 10:10;1;Item
我有一个现有的 Highcharts ,我需要在其上突出显示单个列。 这是一个已经存在了一段时间的百分位图,我对 Highcharts 仍然很陌生,但我在这里看到了一个类似的问题,这个问题虽然涉及堆叠
我有一个多系列柱形图(在本例中为 3 个)。我想在所有系列的列上覆盖一条线。所以我用相同的列系列数据创建了另外 3 个 Line 系列。当只有一列和一行系列时,这非常有效。对于多个系列,线条呈现在类别
我是一名优秀的程序员,十分优秀!