Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Agrupar resultados de JSON con PHP

Estas en el tema de Agrupar resultados de JSON con PHP en el foro de PHP en Foros del Web. Hola, tengo una tabla en mi bd asi: Pasteles || tipo_pastel || precio || color_caja || ----------------------------------------------- || chocolate || 150 || blanco || || ...
  #1 (permalink)  
Antiguo 13/05/2013, 12:01
 
Fecha de Ingreso: julio-2012
Mensajes: 138
Antigüedad: 11 años, 8 meses
Puntos: 4
Pregunta Agrupar resultados de JSON con PHP

Hola, tengo una tabla en mi bd asi:

Pasteles
|| tipo_pastel || precio || color_caja ||
-----------------------------------------------
|| chocolate || 150 || blanco ||
|| chocolate || 170 || negro ||
|| fresa || 100 || rosa ||
|| fresa || 101 || azul ||

y quiero hacer un json asi, que agrupe por el tipo de pastel:

{"json":{"chocolate":[{"precio":"150","color_caja":"blanco"}, {"precio":"170","color_caja":"negro"}],"fresa":[{"precio":"100","color_caja":"rosa"}, {"precio":"101","color_caja":"azul"}]}}


Pero no se como hacerlo, y lo unico que tengo es la consulta, que si funciona, y un while:
Código:
$i=0;
while($info=mysql_fetch_assoc($resultado_query))
{

  $nombre = $info['tipo_pastel'];
  $pastelillos->json[$nombre][$i]['class']=$info['precio'];
  $pastelillos->json[$nombre][$i]['servicio']=$info['color_caja'];
 
$i++;  
}
echo json_encode($pastelillos);
Pero muestra esto:
{"json":{"chocolate":[{"precio":"150","color_caja":"blanco"},{"precio":" 170","color_caja":"negro"}],"fresa":{"2":{"precio":"100","color_caja":"rosa"} ,"3":{"precio":"101","color_caja":"azul"}}}}

Ya no me respeta el corchete y muestra numeros que nunca indique(se que es del arreglo pero no debe salir asi).

Espero me puedan orientar.

Muchas gracias! :)
__________________
Keep learning, someday the knowledge will be your future...
  #2 (permalink)  
Antiguo 13/05/2013, 12:03
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 10 meses
Puntos: 528
Respuesta: Agrupar resultados de JSON con PHP

Yo creo que es muy simple:

Código PHP:
Ver original
  1. while($info=mysql_fetch_assoc($resultado_query))
  2.     $json[]=$info;
  3.  
  4. $json=json_encode($json);
  #3 (permalink)  
Antiguo 14/05/2013, 08:16
 
Fecha de Ingreso: julio-2012
Mensajes: 138
Antigüedad: 11 años, 8 meses
Puntos: 4
Respuesta: Agrupar resultados de JSON con PHP

Gracias por responder, sin embargo me sale null el json.

Pense que hacerle unos cambios en la estructura dentro del while serian, pero no se como.

Espero me puedan ayudar.

Gracias.
__________________
Keep learning, someday the knowledge will be your future...
  #4 (permalink)  
Antiguo 14/05/2013, 10:19
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 10 meses
Puntos: 528
Respuesta: Agrupar resultados de JSON con PHP

Entonces revisa que tu consulta esté dando resultados, sería la única forma de que el arreglo no se creara.
  #5 (permalink)  
Antiguo 14/05/2013, 11:14
 
Fecha de Ingreso: septiembre-2006
Mensajes: 139
Antigüedad: 17 años, 6 meses
Puntos: 14
Respuesta: Agrupar resultados de JSON con PHP

No sé si estaré en lo cierto, porque no sé si he interpretado bien lo que quieres obtener, pero si lo que quieres es agrupar por el tipo de pastel, ¿no sería más adecuado hacer un GROUP BY en la sentencia SQL y posteriormente proceder de forma normal con el json_encode()?

Saludos cordiales.
Francisco J.
  #6 (permalink)  
Antiguo 14/05/2013, 11:16
 
Fecha de Ingreso: julio-2012
Mensajes: 138
Antigüedad: 11 años, 8 meses
Puntos: 4
Respuesta: Agrupar resultados de JSON con PHP

La consulta funciona, eso siempre fue asi.
Lo unico que no funciona es el while, no se como iterar para agrupar por tipo de pastel.

Eso es lo que me tiene confundida.

Gracias.
__________________
Keep learning, someday the knowledge will be your future...
  #7 (permalink)  
Antiguo 14/05/2013, 11:18
 
Fecha de Ingreso: julio-2012
Mensajes: 138
Antigüedad: 11 años, 8 meses
Puntos: 4
Respuesta: Agrupar resultados de JSON con PHP

Cita:
Iniciado por Loop29 Ver Mensaje
La consulta funciona, eso siempre fue asi.
Lo unico que no funciona es el while, no se como iterar para agrupar por tipo de pastel.

Eso es lo que me tiene confundida.

Gracias.
Si hago eso solo me mostrará un pastel de cada sabor o sea 2 y no todos los pasteles.

Eso ya lo intente

Saludos.
__________________
Keep learning, someday the knowledge will be your future...
  #8 (permalink)  
Antiguo 14/05/2013, 11:24
 
Fecha de Ingreso: septiembre-2006
Mensajes: 139
Antigüedad: 17 años, 6 meses
Puntos: 14
Respuesta: Agrupar resultados de JSON con PHP

Es verdad, perdón, capté mál la idea.

Entonces yo lo que haría sería en primer lugar iterar por cada elemento del resultado de la consulta con un bucle foreach y usar una matriz de doble entrada, y el resultado pasarlo a JSON.

Saludos cordiales.
Francisco J.
  #9 (permalink)  
Antiguo 14/05/2013, 11:36
 
Fecha de Ingreso: julio-2012
Mensajes: 138
Antigüedad: 11 años, 8 meses
Puntos: 4
Respuesta: Agrupar resultados de JSON con PHP

Cita:
Iniciado por geofran80 Ver Mensaje
Es verdad, perdón, capté mál la idea.

Entonces yo lo que haría sería en primer lugar iterar por cada elemento del resultado de la consulta con un bucle foreach y usar una matriz de doble entrada, y el resultado pasarlo a JSON.

Saludos cordiales.
Francisco J.
Y como seria, ¿podrias darme un ejemplo?

Saludos.!
__________________
Keep learning, someday the knowledge will be your future...
  #10 (permalink)  
Antiguo 14/05/2013, 11:41
 
Fecha de Ingreso: septiembre-2006
Mensajes: 139
Antigüedad: 17 años, 6 meses
Puntos: 14
Respuesta: Agrupar resultados de JSON con PHP

Mira echa un vistazo al ejemplo que aparece en esta web:

http://stackoverflow.com/questions/1...within-uniques

En cuanto llegue a casa intento ponerte algún ejemplo si no has solucionado el tema antes, es que no tengo el equipo de desarrollo a mano.

Saludos cordiales.
Francisco J.
  #11 (permalink)  
Antiguo 14/05/2013, 12:43
 
Fecha de Ingreso: julio-2012
Mensajes: 138
Antigüedad: 11 años, 8 meses
Puntos: 4
Respuesta: Agrupar resultados de JSON con PHP

Si, gracias, ya vi la pagina, y medio entendi, pero si puedes poner el ejemplo te lo agradeceria.

Saludos.
__________________
Keep learning, someday the knowledge will be your future...
  #12 (permalink)  
Antiguo 14/05/2013, 12:57
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 10 meses
Puntos: 528
Respuesta: Agrupar resultados de JSON con PHP

Primero, no había entendido bien a qué te referías exactamente con agrupar, analizando el json que pones veo que es algo diferente, sin embargo

Cita:
Iniciado por Loop29 Ver Mensaje
La consulta funciona, eso siempre fue asi.
Aún que el json no saliera como quieres, debía darte un arreglo y no null, así que insisto revisa tu consulta.

Respecto a armar el json:

Código PHP:
Ver original
  1. while($info=mysql_fetch_assoc($resultado_query)){
  2.     $json['json'][$info['tipo_pastel']]['precio']=$info['precio'];
  3.     $json['json'][$info['tipo_pastel']]['color_caja']=$info['color_caja'];
  4. }
  5.  
  6. $json=json_encode($json);
  #13 (permalink)  
Antiguo 14/05/2013, 15:52
 
Fecha de Ingreso: julio-2012
Mensajes: 138
Antigüedad: 11 años, 8 meses
Puntos: 4
Respuesta: Agrupar resultados de JSON con PHP

Cita:
Iniciado por ocp001a Ver Mensaje
Primero, no había entendido bien a qué te referías exactamente con agrupar, analizando el json que pones veo que es algo diferente, sin embargo



Aún que el json no saliera como quieres, debía darte un arreglo y no null, así que insisto revisa tu consulta.

Respecto a armar el json:

Código PHP:
Ver original
  1. while($info=mysql_fetch_assoc($resultado_query)){
  2.     $json['json'][$info['tipo_pastel']]['precio']=$info['precio'];
  3.     $json['json'][$info['tipo_pastel']]['color_caja']=$info['color_caja'];
  4. }
  5.  
  6. $json=json_encode($json);

Ya revise y habia sido error mio con una variable, por eso salia null, pero de cualquier forma, la estructura del json, del while para ser mas preciso me retorna al resultado que siempre he tenido:

{"json":{"chocolate":[{"precio":"150","color_caja":"blanco"},{"precio ":" 170","color_caja":"negro"}],"fresa":{"2":{"precio":"100","color_caja":"ros a"} ,"3":{"precio":"101","color_caja":"azul"}}}}

En donde primero tengo el objeto con el arreglo y despues puros arreglos, ya no se respeta el corchete a partir del tipo de pastel fresa.

:(
__________________
Keep learning, someday the knowledge will be your future...
  #14 (permalink)  
Antiguo 14/05/2013, 16:03
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 10 meses
Puntos: 528
Respuesta: Agrupar resultados de JSON con PHP

Esos "números que nunca indicaste" ocurren cuando hay más de un elemento dentro de un arreglo, es normal e inevitable si tienes por ejemplo 2 o más pasteles del mismo sabor con diferente precio y o caja. Otra cosa sería que sobreescribieras los datos para tomar uno solo o sólo tomar el primer valor de cada pastel.
  #15 (permalink)  
Antiguo 14/05/2013, 18:43
 
Fecha de Ingreso: julio-2012
Mensajes: 138
Antigüedad: 11 años, 8 meses
Puntos: 4
Respuesta: Agrupar resultados de JSON con PHP

Cita:
Iniciado por ocp001a Ver Mensaje
Esos "números que nunca indicaste" ocurren cuando hay más de un elemento dentro de un arreglo, es normal e inevitable si tienes por ejemplo 2 o más pasteles del mismo sabor con diferente precio y o caja. Otra cosa sería que sobreescribieras los datos para tomar uno solo o sólo tomar el primer valor de cada pastel.
Entonces lo que quiero sobre agrupar los datos del json, no se puede?

{"json":{"chocolate":[{"precio":"150","color_caja":"blanco"}, {"precio":"170","color_caja":"negro"}],"fresa":[{"precio":"100","color_caja":"rosa"}, {"precio":"101","color_caja":"azul"}]}}

Yo solo he hecho json sencillos, pero nunca uno asi, asi que sinceramente de como iterar los elementos, por eso pregunte.

Gracias.
__________________
Keep learning, someday the knowledge will be your future...
  #16 (permalink)  
Antiguo 14/05/2013, 22:47
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 10 meses
Puntos: 528
Respuesta: Agrupar resultados de JSON con PHP

Claro que se puede:


Código PHP:
Ver original
  1. while($info=mysql_fetch_assoc($resultado_query))
  2.     $json['json'][$info['tipo_pastel']][]=array('precio'=>$info['precio'], 'color_caja' => $info['color_caja']);
  3.  
  4. $json=json_encode($json);
  #17 (permalink)  
Antiguo 16/05/2013, 13:18
 
Fecha de Ingreso: julio-2012
Mensajes: 138
Antigüedad: 11 años, 8 meses
Puntos: 4
Respuesta: Agrupar resultados de JSON con PHP

Cita:
Iniciado por ocp001a Ver Mensaje
Claro que se puede:


Código PHP:
Ver original
  1. while($info=mysql_fetch_assoc($resultado_query))
  2.     $json['json'][$info['tipo_pastel']][]=array('precio'=>$info['precio'], 'color_caja' => $info['color_caja']);
  3.  
  4. $json=json_encode($json);
Muchas gracias, asi era mas o menos como lo necesitaba.
Ya entiendo mejor eso.

Saludos.
__________________
Keep learning, someday the knowledge will be your future...

Etiquetas: agrupar, json, mysql
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:31.