Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] PHP OO Consulta en base de datos, como manejar varios arrays Json

Estas en el tema de Consulta en base de datos, como manejar varios arrays Json en el foro de PHP en Foros del Web. Hola, Pues tengo una duda, vereis: Tengo una tabla en una base de datos en el cual, en un campo tengo almacenado datos en formato ...
  #1 (permalink)  
Antiguo 30/08/2013, 11:33
 
Fecha de Ingreso: agosto-2013
Ubicación: Asturias
Mensajes: 11
Antigüedad: 10 años, 8 meses
Puntos: 0
Pregunta Consulta en base de datos, como manejar varios arrays Json

Hola,

Pues tengo una duda, vereis:

Tengo una tabla en una base de datos en el cual, en un campo tengo almacenado datos en formato Json.

La tabla tiene los siguientes campos:

id_dato
fecha_dato (date)
fecha_recepcion (timestamp)
tipo_dato (enum)
json (aquí almacenaría bastantes datos para luego comparar y hacer estadísticas)

Aquí un ejemplo de como sería un json que manejaría.

Código:
{
"fecha":"2013-08-21",
"globales":
{
"num_dispositivos_activados":10,
"num_dispositivos_enviando":5,
"num_accesos_web":30
},
"tareas":
{
"num_tareas_enviadas":3,
"num_tareas_realizadas":3,
"num_imagenes_enviadas":2
},
"ayudas":
{
"peticiones_ayuda":3,
"num_usuarios_peticion":2
},
"economia":
{
"numero_gastos_apuntados":30,"gasto_total":323.33
}

}

la cuestión es que para realizar comparaciones estadisticas realizaría la siguiente busqueda:

"select json from tabla where fecha_dato>inicio and fecha dato<final"

La búsqueda supuestamente daría como resultado unos cuantos json que tendría manejar para comparar o plasmar en una gráfica.

Mi duda era entonces:

¿como podría hacer para acceder a todos los campos de todos los json que obtengo de la búsqueda?


Muchas gracias de antemano.

Un saludo.
  #2 (permalink)  
Antiguo 30/08/2013, 11:46
 
Fecha de Ingreso: julio-2013
Ubicación: México
Mensajes: 361
Antigüedad: 10 años, 9 meses
Puntos: 55
Respuesta: Consulta en base de datos, como manejar varios arrays Json

Hola.
Desde mi punto de vista lo que haces es muy malo, deberias crear una tabla para guardar esos datos en lugar de guardarlos todos en un campo con json,lo dejo a tu criterio , para el caso específico que tienes, debes usar "json_decode"
http://www.php.net/manual/es/function.json-decode.php
para transformar los datos en objetos o array, y puedas manipularlos.

Saludos.
  #3 (permalink)  
Antiguo 30/08/2013, 12:12
 
Fecha de Ingreso: agosto-2013
Ubicación: Asturias
Mensajes: 11
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: Consulta en base de datos, como manejar varios arrays Json

Hola,

Gracias por contestar.

La verdad es que la tabla me la han recomendado en donde estoy haciendo la base de datos(es un PFC para una empresa). Al principio tenía muchas tablas para guardar la información por separado pero al parecer mi base de datos se irá actualizando con datos que me envíen, y esos datos vendrán en formato json, y me dijeron que esta era la mejor opción, ya que solo tendría que hacer una actualización en una tabla.

Entonces con la funcion json_decode estaría listo ¿algo asi?


Código PHP:
Ver original
  1. $result= mysql_query("select json from tabla where fecha_dato>inicio and fecha dato<final");
  2.  
  3. $datos_json = array();
  4. while ($row = mysql_fetch_object($result)){
  5. $informacion = $row->json;
  6. $info_descifrada = json_decode($informacion);
  7. array_push($datos_json, $info_descifrada);
  8. }
  9.  
  10. //Y a partir de aquí acceder al array
  11.  
  12.  $datos[i]["globales"]["num_dispositivos"];


Muchas gracias.

Un saludo.
  #4 (permalink)  
Antiguo 30/08/2013, 13:24
 
Fecha de Ingreso: julio-2013
Ubicación: México
Mensajes: 361
Antigüedad: 10 años, 9 meses
Puntos: 55
Respuesta: Consulta en base de datos, como manejar varios arrays Json

Veo muy mal todo.

Cita:
Iniciado por Derley Ver Mensaje
y esos datos vendrán en formato json
¿Quien te asegura eso?
Cita:
Iniciado por Derley Ver Mensaje
, y me dijeron que esta era la mejor opción,
Que mal!!!
Cita:
Iniciado por Derley Ver Mensaje
ya que solo tendría que hacer una actualización en una tabla.
No bueno, mejor pon todos los datos en un solo campo con codificacion json; así solo usarias una tabla y un campo.


Has pruebas con el codigo.
Saludos.
  #5 (permalink)  
Antiguo 30/08/2013, 13:54
 
Fecha de Ingreso: agosto-2013
Ubicación: Asturias
Mensajes: 11
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: Consulta en base de datos, como manejar varios arrays Json

Hola,

Me lo asegura la gente de la empresa para la que hago el PFC.

Me han dado un documento detallado explicandome como vendría la información y será en json por metodo POST, y me han aconsejado usar este tipo de tabla para solo acudir a una tabla para consultar y actualizar. Diciendome que es eficiente y que con esta opción no habría que alterarla demasiado para futuras ampliaciones, pero por lo que parece es todo lo contrario. Pero tendré que hacerlo así, ya que así me lo han pedido

Haré pruebas con el código pues.

Muchas gracias por leerme.

Un saludo.
  #6 (permalink)  
Antiguo 01/09/2013, 11:14
 
Fecha de Ingreso: agosto-2013
Ubicación: Asturias
Mensajes: 11
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: Consulta en base de datos, como manejar varios arrays Json

Hola,
Bueno pues di con una solución que parece que funciona, lo pongo por si a alguien le sirve en el futuro.

Imaginemos que tenemos este sencillo formato json:

Código:
{
"fecha": "2013-08-31",
"lugar": "Madrid",
"Tiempo": "Soleado"
}
Y aqui otro:
Código:
{
"fecha": "2013-08-30",
"lugar": "Barcelona",
"Tiempo": "Nublado"
}
Cada json está almacenado en un campo json

Aqui una tabla ejemplo.

id campo1 campo2 ... ... json


Ahora el codigo:

Código PHP:
$resultmysql_query("select json from TABLA where CONDICION");
 
 if(
mysql_num_rows($result)!=0
 {
$datos_json = array();//Creo un array para almacenar cada json que obtenga
while ($row mysql_fetch_object($result)){
$informacion $row->json//Guardo cada json en una vble auxiliar
$info_descifrada json_decode($informaciontrue);//"Descifro" el json 
array_push($datos_json$info_descifrada);// y lo almaceno en el array que he creado antes
 
}

mysql_free_result($result);
//Y a partir de aquí acceder al array
$tam sizeof($datos_json);//Obtengo el tamaño del array
for ($i=0$i<$tam$i++){

echo 
'Fecha '.$datos_json[$i]["fecha"].'</br>'//Y saco por pantalla la fecha de todos los json que he obtenido (por ejemplo)
 

}

else {echo 
'No hay campos';} 
Un saludo

Etiquetas: arrays, json, manejar, select, tabla, 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 15:35.