gpt4 book ai didi

javascript - 无法为 Google 图表构建 json 数据表

转载 作者:行者123 更新时间:2023-11-29 11:46:02 26 4
gpt4 key购买 nike

我现在已经在这个问题上陷入了相当长的一段时间。我环顾四周,但似乎找不到答案。有关 google 开发人员的引用,请参阅下面的链接。

https://developers.google.com/chart/interactive/docs/reference#dataparam

我有这个 PHP 脚本,它从我的数据库中提取数据,然后构建 JSON。

我的代码如下:

<?php 

header('content-type: application/json; charset=utf-8');
header('Access-Control-Allow-Origin:*');//Include this header to make the requests cross-origin
include 'dbconnect.php';//File for database connection


// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}

//Check if query GET parameters are defined
if(isset($_GET['date1']) && isset($_GET['date2'])){

$parm1=$_GET['date1'];
$parm2=$_GET['date2'];
//We build the metadata node of our json object with chart info / update time / chart title
//date_default_timezone_set('Etc/GMT+8');
//$date = date('Y-m-d H:i:s');
//$array['meta'][]=array('title'=>'Sales data for year'.$parm1.'-'.$parm2);
//$array['meta'][]=array('LastUpdated'=>$date);
//$array['meta'][]=array('Info'=>'This chart displays sales data on an annual basis');

$array['data']['cols'][]=array('label'=>'2008','type' => 'number');
$array['data']['cols'][]=array('label'=>'2009','type' => 'number');



}else{

echo "No data available";

}

$sql = "CALL TEST('$parm1','$parm2');";
//We run the query, store all rows in an associative array, then json_encode it
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
$i = 0;
while($row = $result->fetch_row()) {

$array['data']['rows'][]= array(
'c' => array(
array('v'=>intval($row[$i]))
));

echo $row[1];
$i++;
}

}else {
echo "0 results";
}

//unset($array['data']['rows'][0]);
echo $_GET['callback'].'('.json_encode($array).')';
$conn->close();//We close the database connection here

?>

该 php 脚本的 json 输出如下:

 {
data: {
cols: [{
label: "2008",
type: "number"
}, {
label: "2009",
type: "number"
}],
rows: [{
c: [{
v: 3016207
}]
}]
}
}

我的第一个问题是,在c节点中,只添加了一个值,而应该有两个v:{object}。在我的特定情况下,接受的格式应该是嵌套在 c:[array] 中的两个 v:{object} 。我有一种强烈的感觉,json_encode() 无法构建复杂的 JSON,但我过去向它扔了更难的东西,而且它有效。谁能帮我 ?请:o

编辑:预期的 json 格式为:

{
data: {
cols: [{
label: "2008",
type: "number"
}, {
label: "2009",
type: "number"
}],
rows: [{
c: [{v: 3016207 },{v: 3000528}]
}]
}
}

我的查询返回这些:

+---------+---------+
| 2008 | 2009 |
+---------+---------+
| 3016207 | 3000528 |
+---------+---------+

所以基本上第二列的值没有被插入:/

最佳答案

无论是谁提出了这种 JSON 格式,都应该被解雇。看来有人故意刁难。

但是如果您了解数据库函数返回值是什么以及如何操作这些数组,那么生成并不难。例如:您正在循环遍历结果集,即使它始终只有一行,但您没有循环遍历列。然后,您尝试使用单个值 $row[$i] 填充您的 c 元素,并想知道为什么它只是一个值。 (我怀疑您可能误解了 $var[] 构造的工作原理。)如果您想在这方面取得成功,请阅读这些函数。顺便说一句,您仍然容易受到 SQL 注入(inject)攻击。

无论如何,这显然未经测试,但至少应该让您开始。

$sql = "CALL TEST('$parm1','$parm2')";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
$row = $result->fetch_assoc();
foreach ($row as $name=>$val) {
$array['data']['cols'][] = array('label'=>$name, 'type'=>'number');
$c[] = array("v"=>$val);
}
$array['data']['rows'] = array(array('c'=>$c));
} else {
echo "0 results";
}

关于javascript - 无法为 Google 图表构建 json 数据表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34932266/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com