Foros del Web » Programando para Internet » PHP »

como crear array tipo json con php desde consulta

Estas en el tema de como crear array tipo json con php desde consulta en el foro de PHP en Foros del Web. hola amigos espero me puedan ayudar , necesito realizar una consulta a una base de datos y imprimir el resultado en un array tipo json ...
  #1 (permalink)  
Antiguo 12/02/2013, 15:04
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 6 meses
Puntos: 6
como crear array tipo json con php desde consulta

hola amigos espero me puedan ayudar , necesito realizar una consulta a una base de datos y imprimir el resultado en un array tipo json y no se como hacerlo hasta el momento este es mi codigo

Código PHP:
Ver original
  1. $valor = $_GET['valor'];
  2. $usuario = 'postgres';
  3. $contrasenia = 'mipassword';
  4.    
  5.             try {
  6.                 $db = new PDO('pgsql:host=192.168.102.9;dbname=mibase',$usuario,$contrasenia);
  7.                 //$db = new PDO('pgsql:host=192.168.102.200;dbname=volcanoes',$usuario,$contrasenia);
  8.                 }catch(PDOException $e) {
  9.                 //echo $e->getMessage();
  10.                 echo "Usuario y Clave Invalidas";
  11.                 throw new Exception("Usuario y Clave Invalidas", 0, $e);
  12.                 }
  13.                
  14.                
  15. $consulta = $db->prepare("SELECT * FROM usuarios WHERE id_usuarios = '".$valor."'");
  #2 (permalink)  
Antiguo 12/02/2013, 15:07
Avatar de rottenp4nx  
Fecha de Ingreso: octubre-2012
Ubicación: Santiago
Mensajes: 417
Antigüedad: 11 años, 5 meses
Puntos: 36
Respuesta: como crear array tipo json con php desde consulta

json_encode($consulta);

te devuelve el indice con su respectivo valor, para verlo como queda

echo json_encode($array);

saludos
  #3 (permalink)  
Antiguo 12/02/2013, 15:22
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 6 meses
Puntos: 6
Respuesta: como crear array tipo json con php desde consulta

rottenp4nx gracias por responder , yo necesito imprimirlo de la siguiente manera

Código PHP:
Ver original
  1. $arr = array('city' => $valor, 'street' => 'Lenina', 'building' => $valor);

como puedo iterarlo y imprimirlo de esa manera

Código PHP:
Ver original
  1. while($fila = $consulta->fetch(PDO::FETCH_ASSOC))
  2.         {

como lo puedo hacer?
  #4 (permalink)  
Antiguo 12/02/2013, 15:26
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 12 años, 11 meses
Puntos: 76
Respuesta: como crear array tipo json con php desde consulta

podrias imprimirlo:

Código PHP:
Ver original
  1. while($fila = $consulta->fetch(PDO::FETCH_ASSOC))
  2. {
  3.   echo $fila["city"];
  4. }
  #5 (permalink)  
Antiguo 12/02/2013, 15:30
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 6 meses
Puntos: 6
Respuesta: como crear array tipo json con php desde consulta

informacionsys gracias por responder , yo creo que no me hice entender yo necesito entregar un array tipo json como el siguiente ejemplo

$arr = array('city' => $valor, 'street' => 'Lenina', 'building' => $valor);
  #6 (permalink)  
Antiguo 12/02/2013, 15:33
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 12 años, 11 meses
Puntos: 76
Respuesta: como crear array tipo json con php desde consulta

mmm espera ver si te entiendo necesitas algo como esto:

Código PHP:
Ver original
  1. while($fila = $consulta->fetch(PDO::FETCH_ASSOC))
  2. {
  3.         $info = array("city"=>$fila[campo1],
  4.                              "street"=>$fila[campo2],
  5.                              "building"=>$fila[campo3]
  6.                             );
  7.             $salida[] = $info;
  8. }
  9.           var_dump($salida);
  #7 (permalink)  
Antiguo 12/02/2013, 15:38
Avatar de rottenp4nx  
Fecha de Ingreso: octubre-2012
Ubicación: Santiago
Mensajes: 417
Antigüedad: 11 años, 5 meses
Puntos: 36
Respuesta: como crear array tipo json con php desde consulta

Cita:
Iniciado por Montes28 Ver Mensaje
rottenp4nx gracias por responder , yo necesito imprimirlo de la siguiente manera

Código PHP:
Ver original
  1. $arr = array('city' => $valor, 'street' => 'Lenina', 'building' => $valor);

como puedo iterarlo y imprimirlo de esa manera

Código PHP:
Ver original
  1. while($fila = $consulta->fetch(PDO::FETCH_ASSOC))
  2.         {

como lo puedo hacer?
la función lo hace solo, despues en javascript es por ejemplo

Código Javascript:
Ver original
  1. success: function(datos){
  2.    alert(datos.city);
  3. }

Si quieres hacerlo con artos, puedes crear un arreglo aparte

Código PHP:
Ver original
  1. $arr = array();
  2. while($fila = $consulta->fetch(PDO::FETCH_ASSOC))
  3.         {
  4.       $arr[] = $fila;
  5. }
  6.  
  7. echo json_encode($arr);

Después puedes jugar con los ciclos en javascript

Saludos
  #8 (permalink)  
Antiguo 12/02/2013, 15:39
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 6 meses
Puntos: 6
Respuesta: como crear array tipo json con php desde consulta

si es como dices pero no logro obtener el array

Código PHP:
Ver original
  1. $consulta = $db->prepare("SELECT * FROM usuarios WHERE id_usuarios = '".$valor."'");
  2. $arr = array();
  3. while($fila = $consulta->fetch(PDO::FETCH_ASSOC))
  4. {
  5.                             $arr = array("city"=>$fila['usu_estado'],
  6.                              "street"=>$fila['usu_estado'],
  7.                              "building"=>$fila['usu_estado']
  8.                             );
  9.    
  10. }
  11.  

que estoy haciendo mal?
  #9 (permalink)  
Antiguo 12/02/2013, 15:40
Avatar de rottenp4nx  
Fecha de Ingreso: octubre-2012
Ubicación: Santiago
Mensajes: 417
Antigüedad: 11 años, 5 meses
Puntos: 36
Respuesta: como crear array tipo json con php desde consulta

Cita:
Iniciado por rottenp4nx Ver Mensaje
la función lo hace solo, despues en javascript es por ejemplo

Código Javascript:
Ver original
  1. success: function(datos){
  2.    alert(datos.city);
  3. }

Si quieres hacerlo con artos, puedes crear un arreglo aparte

Código PHP:
Ver original
  1. $arr = array();
  2. while($fila = $consulta->fetch(PDO::FETCH_ASSOC))
  3.         {
  4.       $arr[] = $fila;
  5. }
  6.  
  7. echo json_encode($arr);

Después puedes jugar con los ciclos e indices en javascript

PD: Se repitió el post, perdón D:

Saludos
  #10 (permalink)  
Antiguo 12/02/2013, 15:43
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 12 años, 11 meses
Puntos: 76
Respuesta: como crear array tipo json con php desde consulta

hola


mmm si te falta algo

como es un bucle por cada ciclo estas reescribiendo el arreglo $arr, es por eso que queda vacio o deberia quedar con los ultimos datos.

por eso debes hacerlo asi como te indique en este segmento:


Código PHP:
Ver original
  1. //por cada ciclo se arma un arreglo con la informacion
  2.         $info = array("city"=>$fila[campo1],
  3.                              "street"=>$fila[campo2],
  4.                              "building"=>$fila[campo3]
  5.                             );
  6.             $salida[] = $info;// se almacena y se concatena en un arreglo  el subarreglo por cada ciclo
  7. }
  8. $json = json_encode($salida);
  #11 (permalink)  
Antiguo 12/02/2013, 15:51
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 6 meses
Puntos: 6
Respuesta: como crear array tipo json con php desde consulta

hice lo que me indicaste y recibo un null

Código PHP:
Ver original
  1. $consulta = $db->prepare("SELECT * FROM usuarios WHERE id_usuarios = '".$valor."'");
  2. while($fila = $consulta->fetch(PDO::FETCH_ASSOC))
  3. {
  4.                $info = array("city"=>$fila['usu_estado'],
  5.                              "street"=>$fila['usu_estado'],
  6.                              "building"=>$fila['usu_estado']
  7.                             );
  8.             $salida[] = $info;
  9. }
  10. $json = json_encode($salida);

por que?
  #12 (permalink)  
Antiguo 12/02/2013, 15:55
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 12 años, 11 meses
Puntos: 76
Respuesta: como crear array tipo json con php desde consulta

hum,

verificaste que la consulta este retornando datos, para mi que no esta entrando al bucle por eso aparece null, para descartar coloca antes del while

$salida = array();
  #13 (permalink)  
Antiguo 12/02/2013, 16:01
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 6 meses
Puntos: 6
Respuesta: como crear array tipo json con php desde consulta

no me funciona , que estoy haciendo mal?

Código PHP:
Ver original
  1. $consulta = $db->prepare("SELECT * FROM usuarios WHERE id_usuarios =4");
  2. $salida = array();
  3. while($fila = $consulta->fetch(PDO::FETCH_ASSOC))
  4. {
  5.                $info = array("city"=>$fila['usu_estado'],
  6.                              "street"=>$fila['usu_estado'],
  7.                              "building"=>$fila['usu_estado']
  8.                             );
  9.             $salida[] = $info;
  10. }
  11. $json = json_encode($salida);
  #14 (permalink)  
Antiguo 12/02/2013, 16:05
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 12 años, 11 meses
Puntos: 76
Respuesta: como crear array tipo json con php desde consulta

hummmm, prueba esto:

Código PHP:
Ver original
  1. while($fila = $consulta->fetch(PDO::FETCH_ASSOC))
  2. {
  3.   var_dump($fila);
  4. }

tiene que arrojarte un arreglo con toda la info de la consulta, si retorna null o vacio entonces la consulta no retorna datos
  #15 (permalink)  
Antiguo 12/02/2013, 16:41
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 6 meses
Puntos: 6
Respuesta: como crear array tipo json con php desde consulta

informacionsys gracias por responder , tengo una duda porque el siguiente codigo funciona bien y se retorna el array

Código PHP:
Ver original
  1. <?
  2. $usuario = 'postgres';
  3. $contrasenia = 'mipass';
  4.    
  5.             try {
  6.                 $db = new PDO('pgsql:host=192.168.102.9;dbname=vmidb',$usuario,$contrasenia);
  7.                 }catch(PDOException $e) {
  8.                 echo "Usuario y Clave Invalidas";
  9.                 throw new Exception("Usuario y Clave Invalidas", 0, $e);
  10.                 }
  11.                
  12.                
  13. $consulta = $db->prepare("SELECT * FROM usuarios WHERE id_usuarios =4");
  14. $consulta->execute();
  15. $cuentaconsulta = $consulta->rowCount();
  16. echo $cuentaconsulta;
  17.  
  18. $salida = array();
  19. while($fila = $consulta->fetch(PDO::FETCH_ASSOC))
  20. {
  21.                $info = array("city"=>$fila['usu_estado'],
  22.                              "street"=>$fila['usu_estado'],
  23.                              "building"=>$fila['usu_estado']
  24.                             );
  25.             $salida[] = $info;
  26. }
  27.  
  28. die(json_encode($salida));
  29.  
  30.  
  31. ?>



el problema es el siguiete codigo
Código Javascript:
Ver original
  1. $(document).ready(function() {
  2.     $('.edit-address').click(function() {
  3.     ///var valor= $(this).attr('data-pk');
  4.     var valor= $(this).attr('id');
  5.     console.log(valor);
  6.     $.ajax({
  7.     url:'consulta.php',
  8.     dataType: 'json',
  9.     data:{
  10.     valor:valor,
  11.     }
  12.     }).done(function(resultado) {
  13.     console.log(resultado);
  14.     $('#4').editable('setValue', resultado);
  15.     });
  16.     });
  17.     $('.edit-address').editable({
  18.     url: 'multiples.php',
  19.     title: 'Enter city, street and building #',
  20.     });
  21.     });

porque no retorna el array

Código PHP:
Ver original
  1. $valor = $_GET['valor'];
  2.  
  3. $usuario = 'postgres';
  4. $contrasenia = 'mipass';
  5.    
  6.             try {
  7.                 $db = new PDO('pgsql:host=192.168.102.9;dbname=mibase',$usuario,$contrasenia);
  8.                
  9.                 }catch(PDOException $e) {
  10.                
  11.                 echo "Usuario y Clave Invalidas";
  12.                 throw new Exception("Usuario y Clave Invalidas", 0, $e);
  13.                 }
  14.                
  15.                
  16. $consulta = $db->prepare("SELECT * FROM usuarios WHERE id_usuarios = 4");
  17. $consulta->execute();
  18. $cuentaconsulta = $consulta->rowCount();
  19. echo $cuentaconsulta;
  20.  
  21. $salida = array();
  22. while($fila = $consulta->fetch(PDO::FETCH_ASSOC))
  23. {
  24.   $info = array("city"=>$fila['usu_estado'],"street"=>$fila['usu_estado'],"building"=>$fila['usu_estado']);
  25.             $salida[] = $info;
  26. }
  27. die(json_encode($salida));
  28. /*
  29. $arr = array('city' => $valor, 'street' => 'Lenina', 'building' => $valor);
  30. die(json_encode($arr));
  31. */
  #16 (permalink)  
Antiguo 12/02/2013, 16:52
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 12 años, 11 meses
Puntos: 76
Respuesta: como crear array tipo json con php desde consulta

ok,

mmmm puede que te retorne null porque la salida del json desde php no es la correcta

haz esto :

Código Javascript:
Ver original
  1. $(document).ready(function()
  2. {
  3.     $('.edit-address').click(function()
  4.     {
  5.         var valor= $(this).attr('id');
  6.         console.log(valor);
  7.  
  8.         $.ajax({
  9.         url:'consulta.php',
  10.         dataType:'json',
  11.         data:"valor="+valor,
  12.         success:function(response)
  13.         {
  14.             alert(response);
  15.         }
  16.     });
  17.  
  18.  
  19.     $('.edit-address').editable({
  20.     url: 'multiples.php',
  21.     title: 'Enter city, street and building #',
  22.     });
  23. });

consulta.php


Código PHP:
Ver original
  1. <?
  2. $usuario = 'postgres';
  3. $contrasenia = 'mipass';
  4.    
  5.             try {
  6.                 $db = new PDO('pgsql:host=192.168.102.9;dbname=vmidb',$usuario,$contrasenia);
  7.                 }catch(PDOException $e) {
  8.                 echo "Usuario y Clave Invalidas";
  9.                 throw new Exception("Usuario y Clave Invalidas", 0, $e);
  10.                 }
  11.                
  12.                
  13. $consulta = $db->prepare("SELECT * FROM usuarios WHERE id_usuarios =4");
  14. $consulta->execute();
  15. $cuentaconsulta = $consulta->rowCount();
  16. echo $cuentaconsulta;
  17.  
  18. $salida = array();
  19. while($fila = $consulta->fetch(PDO::FETCH_ASSOC))
  20. {
  21.                $info = array("city"=>$fila['usu_estado'],
  22.                              "street"=>$fila['usu_estado'],
  23.                              "building"=>$fila['usu_estado']
  24.                             );
  25.             $salida[] = $info;
  26. }
  27.  
  28. echo json_encode($salida);
  29.  
  30.  
  31. ?>


Se me habia olvidado, siempre que retornes json con ajax, en el archivo php debes retorna el json imprimiendolo , es decir

Código PHP:
Ver original
  1. echo json_encode($salida);

si todo funciona el alert te debe mostrar Object,

PD: te recomiendo hagas pruebas desde Firefox , y haces uso de Firebug, no se si lo conozcas , pero es muy bueno para depurar errores y ver que informacion te esta retornando el servidor php
  #17 (permalink)  
Antiguo 12/02/2013, 16:54
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 6 meses
Puntos: 6
Respuesta: como crear array tipo json con php desde consulta

informacionsys gracias por responder hice lo que me indicas pero por consola observo [Object] y se debe de imprimir todo el array

que falta?
  #18 (permalink)  
Antiguo 12/02/2013, 16:55
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 12 años, 11 meses
Puntos: 76
Respuesta: como crear array tipo json con php desde consulta

osea que esta bien, te retorno bien la informacion claro, asi es como deberia retornar como objeto json, ahora solo te quedo recorrerlo desde javascript
  #19 (permalink)  
Antiguo 12/02/2013, 16:58
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 6 meses
Puntos: 6
Respuesta: como crear array tipo json con php desde consulta

pues mira una cosa

en consulta.php
Código PHP:
Ver original
  1. $arr = array('city' => 'Colombia', 'street' => 'Lenina', 'building' => 12);

y en consolta obtendria
Object {city: "Colombia", street: "Lenina", building: 12}

y el php con la consulta a base de datos obtendria
[Object]

porque no se imprime el array?
  #20 (permalink)  
Antiguo 12/02/2013, 17:03
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 12 años, 11 meses
Puntos: 76
Respuesta: como crear array tipo json con php desde consulta

mmm si se imprime , pero al retornarlo , no te retorna como un string el arreglo , sino como objeto.. por eso te digo usa firefox y veras que te retorna algo asi:

{'valores':[{'llave':'valor',},{'llave':'valor2'}]}

Etiquetas: json, select, sql, tipo, usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:44.