convertir el conjunto de resultados mysql en un objeto (nombre, datos) para alimentar a HighCharts
estoy usandoGráfico de barras de HighCharts para trazar datos de mysql resultset en un gráfico de barras.
Ahora el conjunto de resultados de mi consulta es el siguiente:
Name Expense
-----------------
July 700.0000
August 450.0000
September 1700.0000
losseries
La propiedad de HighCharts requiere datos en el siguiente formato para trazar la gráfica.
[
{name:"July",data:[700.0000]},
{name:"August",data:[450.0000]},
{name:"September",data:[1700.0000]}
]
Así que pensé en cubrir mi conjunto de resultados en un objeto JSON usandojson_encode($row)
. Pero tengo la siguiente salida:
[{"name":"July","data":"700.0000"},
{"name":"August","data":"450.0000"},
{"name":"September","data":"1700.0000"}]
Dudas:
¿Hay alguna forma de obtener / convertir el conjunto de resultados en exactamente el mismo formato que exige la propiedad de la serie de HighCharts?¿También puedo usar un objeto creado en el bloque php, directamente en el javascript? Di que creo un objeto$jsonNameData
fuera de mi conjunto de resultados. Entonces puedo usarlo en el javascript como
series: <? echo $jsonNameData ?>
EDITAR:
Pude resolver Q1 haciendo lo siguiente:
$count = 0;
$strSeries = "[";
while($r = mysql_fetch_assoc($result)) {
if($count == 0){
$strSeries .= "{name:'" . $r['name'] . "',";
$strSeries .= "data:[" . $r['data'] . ']}';
$count = 1;
}
else {
$strSeries .= ",{name:'" . $r['name'] . "',";
$strSeries .= "data:[" . $r['data'] . ']}';
}
$rows[] = $r;
}
$strSeries .= "]";
Consiguió la cadena requerida en$strSeries
.
Ahora el problema es la segunda pregunta. Asigné el valor de$strSeries
a una variable en javascript pero cuando uso esa variable como
series: variableName
No está trazando el gráfico correctamente, aunque la variable tenga el valor adecuado (verificada a través de la alerta).