PHP - crear objetos json en php

   
Vista:

crear objetos json en php

Publicado por Raidel Rodriguez romeu rirro@info.upr.edu.cu (4 intervenciones) el 30/01/2014 23:07:40
Hola Programadores
Tengo un problema y necesito ayuda. Quiero tomar el resultado que me devuelven dos consultas a una BD y convertirlos en un mismo objeto json. Para que me entiendan mejor voy a poner parte del código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$sqlviento_f= 'SELECT  MIN(viento_f),MAX(viento_f) FROM est3 WHERE date(fecha)='.$fecha ;
$sqldir_viento_max='SELECT dir_viento FROM est3 WHERE date(fecha)='.$fecha. ' AND viento_f = (SELECT  MAX(viento_f) FROM est3 WHERE date(fecha) = '.$fecha. ')';
$sqldir_viento_min='SELECT dir_viento FROM est3 WHERE date(fecha)='.$fecha. ' AND viento_f = (SELECT  MIN(viento_f) FROM est3 WHERE date(fecha) = '.$fecha. ')';
 
$resultviento_f = mysql_query($sqlviento_f,$con);
$resultdir_viento_max=mysql_query($sqldir_viento_max,$con);
$resultdir_viento_min=mysql_query($sqldir_viento_min,$con);
 
 $rows = array();
while($r = mysql_fetch_array($resultviento_f))
{
       $rows[] = $r;
}
$array_dir_viento= array();
$array_dir_viento[0]=mysql_fetch_object($resultdir_viento_max);
$array_dir_viento[1]=mysql_fetch_object($resultdir_viento_min);
$rows[]=$array_dir_viento;
 
echo json_encode($rows);
 El resultado que muestra este código es el siguiente
"0":"3.1","MIN(viento_f)":"3.1","1":"10.8","MAX(viento_f)":"10.8"}
[{"dir_viento":"SW"},{"dir_viento":"N"}]

Pero en vez de ser "dir_viento" la llave y "SW" el valor, el objeto se crea con la cadena "dir_viento":"SW" como valor. Afiferencia de la primera línea que "MIN(viento_f)" es la llave y "3.1" es el valor.
Espero su colaboración y muchas gracis por adelantado.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

crear objetos json en php

Publicado por xve (5523 intervenciones) el 31/01/2014 15:14:59
Hola Raidel, no entiendo muy bien el problema, yo creo que esta bien...

He hecho la prueba y me funciona perfectamente...
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$link=mysql_connect("localhost","all","all");
mysql_select_db("test");
 
$result = mysql_query("SELECT * FROM test",$link);
 
$toJson=Array();
while($row=mysql_fetch_array($result))
{
    $toJson[]=$row;
}
echo json_encode($toJson);
?>

El resultado que devuelve en json es:
1
2
3
4
5
6
[{"0":"1","id":"1","1":"coche","descripcion":"coche","2":"0","valor":"0"},
{"0":"2","id":"2","1":"casa","descripcion":"casa","2":"3","valor":"3"},
{"0":"3","id":"3","1":"bici","descripcion":"bici","2":"4","valor":"4"},
{"0":"4","id":"4","1":"casa","descripcion":"casa","2":"3","valor":"3"},
{"0":"5","id":"5","1":"pepe","descripcion":"pepe","2":"0","valor":"0"},
{"0":"26","id":"26","1":"moto","descripcion":"moto","2":"3","valor":"3"}]

La estructura de mi tabla de prueba es:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
CREATE TABLE IF NOT EXISTS `test` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `descripcion` varchar(3000) NOT NULL,
  `valor` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `descripcion` (`descripcion`(1000))
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=27 ;
 
INSERT INTO `test` (`id`, `descripcion`, `valor`) VALUES
(1, 'coche', 0),
(2, 'casa', 3),
(3, 'bici', 4),
(4, 'casa', 3),
(5, 'pepe', 0),
(26, 'moto', 3);

Espero que te sirva...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

crear objetos json en php

Publicado por xve (5523 intervenciones) el 31/01/2014 15:15:23
Segun tu Raidel, como tendría que devolverte los valores?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar