Foros del Web » Programando para Internet » PHP »

Usando PHP con JSON - Como es que funciona ?

Estas en el tema de Usando PHP con JSON - Como es que funciona ? en el foro de PHP en Foros del Web. Hola foreros. Al investigar sobre un proyecto, me encontré que tenía que saber de JSON. Hace 2 días empecé a investigar sobre este tema (nunca ...
  #1 (permalink)  
Antiguo 20/12/2011, 13:30
Avatar de ghidalgoram  
Fecha de Ingreso: marzo-2008
Ubicación: Costa Rica
Mensajes: 446
Antigüedad: 16 años, 1 mes
Puntos: 7
Pregunta Usando PHP con JSON - Como es que funciona ?

Hola foreros.

Al investigar sobre un proyecto, me encontré que tenía que saber de JSON. Hace 2 días empecé a investigar sobre este tema (nunca había tenido que usarlo). Deseo saber como usarlo con PHP. He leído en internet pero todavía me quedan ciertas dudas. Me gustaría una ayuda extra con alguien que ya a usado estas 2 tecnologías (PHP y JSON).


Por ejemplo, programando en PHP siempre he usado AJAX, para consultar al Server. Voy a utilizar un ej y creo que asi podré explicar mejor mis dudas.

Si debo mostrar un listado de email's de clientes de X país, usando AJAX, se que necesito dos archivos:

1. html (donde el usuario da a click a algún botón que diga "Consultar"). Desde aqui se llama a la función.

Código HTML:
Ver original
  1. <input name="btn_crea_listado" type="button" id="btn_crea_listado" value="Ver Listado" onclick="javascript:listado();" />

Suponiendo que el botón anterior usa AJAX.


2. php (el archivo PHP que se conecta a la base de datos, recupera los registros y los devuelve en código html).

Código PHP:
<?php
$rows 
= array();

$query mysql_query("SELECT email, usuario FROM tbl_usuario ORDER BY email;");

while(
$item mysql_fetch_array($query)){
    
$rows[] = $item;
}    

/*  Y por aquí crear una función que concatene y devuelva el html según el resultado de la consulta */

?>



Algo así como:

Código HTML:
Ver original
  1. <table width="400" border="1" >
  2.   <tr>
  3.     <td>USUARIO</td>
  4.     <td>EMAIL</td>
  5.   </tr>
  6.   <tr>
  7.     <td>Pepe</td>
  8.   </tr>
  9.   <tr>
  10.     <td>Noé</td>
  11.   </tr>


¿Como se crearía esto pero usando JSON y se usa una función en PHP llamada "json_decode()" ? He visto que se crea un archivo con extensión ".json" pero no comprendo como es que funciona la lógica entre PHP y JSON.

Agradezco alguno que me pueda aclarar con este ejemplo, ya que estoy en el proceso de entender esta tecnología.

Gracias.
__________________
Loading...
  #2 (permalink)  
Antiguo 20/12/2011, 14:49
 
Fecha de Ingreso: junio-2008
Ubicación: CABA
Mensajes: 11
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Usando PHP con JSON - Como es que funciona ?

Yo le he usado con jquery.
Como lo llamo.
Código Javascript:
Ver original
  1. $.ajax({
  2.             url: 'listarBusquedaMap.php',
  3.             type: 'post',
  4.             dataType : 'json',
  5.             data: {
  6.                 min : 10,
  7.                 campos : seleArr,
  8.                 valores : inpArr
  9.             },
  10.             success : function(data){
  11.                 var datos = data.datos;
  12.                 var total = data.total;
  13.                 ....
  14.        
  15.          });
  16.     });
Como lo use en php
Código PHP:
Ver original
  1. ...
  2. $resultado = devuelvo el resultado de l aquery.
  3. $num = 0;
  4. if ($resultado->num_rows > 0) {
  5.     while ($row = $resultado->fetch_array()) {
  6.         if ($row['latitud'] != '' && $row['longitud'] != '' ){
  7.             $json['datos'][$row['numero_registro']]['lat'] = $row['latitud'];
  8.             $json['datos'][$row['numero_registro']]['lng'] = $row['longitud'];
  9.         }
  10.     }
  11.    $json['total'] = $resultado->num_rows;
  12.     echo json_encode($json);
  13. }
  14. ?>
Que recibe el javascript
Código JSON:
Ver original
  1. {"datos":{"1":{"lat":"-34.62752546534251","lng":"-58.38427463281249"},"2":{"lat":"-36.36708429817006","lng":"-58.86767307031249"},"3":{"lat":"-39.441465495312976","lng":"-64.85796848046874"}},"total":3}
  #3 (permalink)  
Antiguo 20/12/2011, 15:30
Avatar de ghidalgoram  
Fecha de Ingreso: marzo-2008
Ubicación: Costa Rica
Mensajes: 446
Antigüedad: 16 años, 1 mes
Puntos: 7
Respuesta: Usando PHP con JSON - Como es que funciona ?

Gracias colega por responder.
Lo que deseo saber es crear, configurar, adaptar, etc,.. el archivo JSON según la necesidad.

Como PHP es contenido dinámico, me parece que el archivo JSON debe definirse como variables ?

En el ejemplo que expuse, supongo que el archivo JSON se trabajaría algo así:

Código Javascript:
Ver original
  1. {"lista":"rows":[
  2.     {"email":"","usuario":"EST-1"},
  3. ]}

Pienso que se debe usar de así. ? Sino, agradezco si me corrigen.
__________________
Loading...
  #4 (permalink)  
Antiguo 21/12/2011, 01:32
Avatar de dggluz  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 525
Antigüedad: 15 años
Puntos: 50
Respuesta: Usando PHP con JSON - Como es que funciona ?

Escribí esta respuesta pensando en que tienes cierto manejo de JavaScript y de programación orientada a objetos (que al menos sabes qué es un objeto y cómo puede escribirse en JavaScript). Espero que te sirva:

No te compliques con archivos JSON, no necesitas ninguno. JSON es una notación para describir objetos (tiene ciertas limitaciones, como las referencias circulares, pero no viene al caso), cuya principal ventaja (para los programadores web) es que en sí mismo es código JavaScript válido. Entonces, el resultado de evaluar una cadena JSON en JavaScript es un objeto JavaScript. Por ejemplo:
Código Javascript:
Ver original
  1. var persona=eval('('+'{"nombre": "carlos", "edad": 50}'+')');
Lo que debes hacer entonces es guardar en una variable el resultado de evaluar la cadena JSON (en JavaScript, obvio... en caso de que no sepas JavaScript, lo primero sería aprenderlo). Luego, puedes manipular ese objeto como te plazca (por ejemplo, modificar el DOM a partir de la información en ese objeto). En lugar de usar la función "eval", puedes usar el objeto JSON que está disponible en algunos navegadores (esta opción es más segura y correcta, pero menos compatible). Si usas eval, agrega un par de paréntesis alrededor de la cadena JSON, para evitar un posible error de sintaxis (en JavaScript las llaves se usan tanto para escribir objetos literales como para encerrar bloques de código).
Desde el servidor lo único que tendrías que hacer es imprimir código JSON (¡nada de código HTML!), que puedes armarlo a mano, o mejor aún: generarlo a partir de un array o de un objeto PHP con la función json_encode:

Código PHP:
$rows = array();

$query mysql_query("SELECT email, usuario FROM tbl_usuario ORDER BY email;");

while(
$item mysql_fetch_array($query)){
    
$rows[] = $item;
}

echo 
json_encode(array('resultados'=>$rows));
/*
Debería imprimir algo como: {"resultados":[{"nombre":"pepe", "email":"[email protected]"}, {"nombre":"pancho", "email":"[email protected]"}]}
*/ 
  #5 (permalink)  
Antiguo 21/12/2011, 01:35
marcofbb
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Usando PHP con JSON - Como es que funciona ?

Te dejo algunos tutoriales y ejemplos:

http://www.marcofbb.com.ar/categoria/articulos/json/

Etiquetas: json
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 07:18.