2012-04-30 16 views
7

Estoy tratando con Highcharts con datos dinámicos (valores recuperados de la base de datos). Al escribir una consulta que era capaz de recuperar los datos siguientes de la mesacómo usar json_encode

Item 2011 2012 
pen  5  7 
pencil 4  20 
eraser 6  43 

Quiero guardar la información anterior en la siguiente estructura y pasarlo a otra página

[{ name:'pen', data: [5,7]},{ name:'pencil', data: [4,20]},{ name:'eraser', data: [6,43]}]"; 

Quiero empujar los datos anteriores a la tabla de arriba.

¿Hay alguna manera de generar en este formato? Intenté usar json_encode pero no pude tener éxito. ¿Puedo lograr esto usando json_encode?

Updated he tratado de esta manera

while($row = mysql_fetch_assoc($result)) 
    { 
    $rows[]= $row; 

    } 
echo json_encode($rows); 

y tiene

[{"Item":"pen","2011":"5","2012":"7"},{"Item":"pencil","2011":"4","2012":"20"},{"Item":"eraser","2011":"6","2012":"43"}] 
+2

'json_encode' codifica JSON, no la expresión de objeto Javascript (claves sin comillas) que tienes allí. No es que importe, sin embargo. – mario

+2

Parece que un mejor enfoque sería serializar los datos. – nickb

+1

@ JohnConde he actualizado un poco de info.check out – Anil

Respuesta

17

json_encode es un método práctico para convertir una matriz en formato JSON. Para tener la salida que proporcionó, necesitará una matriz de matrices. Cada sub-matriz tiene teclas de "Nombre" y "datos", donde "nombre" es la columna Elemento, y "datos" es otra matriz que contiene los valores de 2011 y 2012.

$results = mysql_query("..."); 
$arr = array(); 

while ($row = mysql_fetch_assoc($results)) 
{ 
    $name = $row['Item']; 
    $data = array($row['2011'], $row['2012']); 

    $arr[] = array('name' => $name, 'data' => $data); 
} 

echo json_encode($arr); 
3
  1. bucle a través de los resultados de base de datos y poner los resultados en una matriz
  2. JSON codificar la matriz
Cuestiones relacionadas