Я пытаюсь преобразовать массив, полученный приведенным ниже кодом, используя не устаревшие методы с помощью php pdo:
$stm = $conn->prepare("SELECT * FROM mysqltable");
$stm->execute();
$results = $stm->fetchAll(PDO::FETCH_ASSOC);
print_r($results);
в следующий формат, необходимый для использования fusioncharts
[
{
label: "CJ Anderson",
value: "25"
},
{
label: "Imran Tahir",
value: "25"
},
...
...
]
Исходный массив выглядит следующим образом:
Array (
[0] => Array (
[Id] => 6
[Number] => 1234567890
[Visits] => 1
[Name] => John
)
[1] => Array (
[Id] => 7
[Number] => 1236549871
[Visits] => 9
[Name] => Jerry
)
[2] => Array (
[Id] => 8
[Number] => 2147483647
[Visits] => 3
[Name] => Jane
)
)
Любая помощь будет оценена, спасибо.
РЕДАКТИРОВАТЬ: как я прокомментировал ниже. У меня есть полный файл php, который работает, если вы вводите данные вручную. Я не могу заставить его работать, когда я вставляю $ jsonEncodedData. Мысли?
<html>
<head>
<title>FusionCharts XT - Column 2D Chart - Data from a database</title>
<link rel="stylesheet" type="text/css" href="css/style.css" />
<!-- You need to include the following JS file to render the chart.
When you make your own charts, make sure that the path to this JS file is correct.
Else, you will get JavaScript errors. -->
<script src="fusioncharts/js/fusioncharts.js"></script>
</head>
<body>
<?php
try {
# MySQL with PDO_MYSQL
$mysql_host = 'host';
$mysql_database = 'table';
$mysql_username = 'user';
$mysql_password = 'pass';
$conn = new PDO("mysql:host=$mysql_host; dbname=$mysql_database", $mysql_username, $mysql_password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$conn->exec("SET CHARACTER SET utf8"); // Sets encoding UTF-8
}
catch(PDOException $e) {
echo $e->getMessage();
}
// Form the SQL query that returns the top 10 most populous countries
// Execute the query, or else return the error message.
$stm = $conn->prepare("SELECT Name, Visits FROM mysqltable"); //WHERE Area :SelArea");
$stm->execute();
$results = $stm->fetchAll(PDO::FETCH_ASSOC);
include("fusioncharts.php");
$jsnarray = array();
foreach($results as $k => $v){
$jsnarray[] = array('label' => $results[$k]['Name'], 'value' => $results[$k]['Visits']);
};
$jsonEncodedData=json_encode($jsnarray);
new FusionCharts("type of chart",
"unique chart id",
"width of chart",
"height of chart",
"div id to render the chart",
"type of data",
"actual data");
$columnChart = new FusionCharts(
"column2d",
"ex1" ,
"600",
"400",
"chart-1",
"json",
'{
"chart":
{
"caption":"Harry\'s SuperMart",
"subCaption":"Top 5 stores in last month by revenue",
"numberPrefix":"$",
"theme":"ocean"
},
"data": //$jsonEncodedData}'); <---I tried to insert this after "data":but no results unlike if you put raw data**
[
{
"label":"Bakersfield Central",
"value":"880000"
},
{
"label":"Garden Groove harbour",
"value":"730000"
},
{
"label":"Los Angeles Topanga",
"value":"590000"
},
{
"label":"Compton-Rancho Dom",
"value":"520000"
},
{
"label":"Daly City Serramonte",
"value":"330000"
}
]
}');
// Render the chart
$columnChart->render();
?>
<div id="chart-1"><!-- Fusion Charts will render here--></div>
</body>
</html>
============== Редактировать 28.12.15 ==========
Пробовал следующий код без результатов, у меня вопрос, не должны ли мы заканчиваться на "}", поскольку они этого требуют:
$columnChart = new FusionCharts(
"column2d",
"ex1" ,
"600",
"400",
"chart-1",
"json",
'{
"chart":
{
"caption":"Harry\'s SuperMart",
"subCaption":"Top 5 stores in last month by revenue",
"numberPrefix":"$",
"theme":"ocean"
},
"data": ' . $jsonEncodedData);
//}';
// Render the chart
print_r($columnChart);
$columnChart->render();
?>
<div id="chart-1"><!-- Fusion Charts will render here--></div>
</body>
</html>
Я также хотел опубликовать различия в массивах между «ручным» методом и «методом выборки» (см. Выше в этом редактировании).
С выборкой:
Объект FusionCharts ([constructorOptions: FusionCharts: private] => Array (> [type] => column2d [id] => ex1 [width] => 600 [height] => 400 [renderAt] =>> диаграмма-1 [dataFormat ] => json [dataSource] => {"chart": {> "caption": "Harry's SuperMart", "subCaption": "Лучшие 5 магазинов за последний месяц по> выручке", "numberPrefix": "$", " theme ":" ocean "}," data ":> [{" label ":" John "," value ":" 125 "}, {" label ":" Джерри "," value ":" 125 "}, {"label": "Jane", "value": "125"}]) [constructorTemplate: FusionCharts: private] =>> [renderTemplate: FusionCharts: private] =>)
С ручным методом (который работает):
Объект FusionCharts ([constructorOptions: FusionCharts: private] => Array (> [type] => column2d [id] => ex1 [width] => 600 [height] => 400 [renderAt] =>> диаграмма-1 [dataFormat ] => json [dataSource] => {"chart": {> "caption": "Harry's SuperMart", "subCaption": "5 лучших магазинов за последний месяц по> доходу", "numberPrefix": "$", " theme ":" ocean "}," data ": [{>" label ":" Bakersfield Central "," value ":" 880000 "}, {" label ":" Garden Groove> harbour "," value ":" 730000 "}, {" label ":" Лос-Анджелес Топанга ",>" value ":" 590000 "}, {" label ":" Compton-Rancho Dom "," value ":" 520000 "}, {>" label ":" Daly City Serramonte "," value ":" 330000 "}]})> [constructorTemplate: FusionCharts: private] =>> [renderTemplate: FusionCharts: private] =>)
Я сразу вижу два различия: в руководстве вставляются пробелы вокруг «данных» и конечного параметра}.
JSON
. Использоватьjson_encode()
? - person frz3993   schedule 28.12.2015SELECT *
) и json_encode а> - person bansi   schedule 28.12.2015$jsonEncodedData . '}');
проверить? - person FirstOne   schedule 28.12.2015