Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Agrupar los resultados Json

Estas en el tema de Agrupar los resultados Json en el foro de PHP en Foros del Web. Hola amigos como estan? espero que bien, miren tengo una duda parecida a esta pregunta: [URL="http://www.forosdelweb.com/f18/agrupar-resultados-json-con-php-1051271/"]http://www.forosdelweb.com/f18/agrupar-resultados-json-con-php-1051271/[/URL] En mi caso es exactamente lo mismo, estoy utilizando ...
  #1 (permalink)  
Antiguo 28/03/2014, 12:16
 
Fecha de Ingreso: junio-2013
Mensajes: 8
Antigüedad: 10 años, 10 meses
Puntos: 1
Agrupar los resultados Json

Hola amigos como estan? espero que bien, miren tengo una duda parecida a esta pregunta: [URL="http://www.forosdelweb.com/f18/agrupar-resultados-json-con-php-1051271/"]http://www.forosdelweb.com/f18/agrupar-resultados-json-con-php-1051271/[/URL]

En mi caso es exactamente lo mismo, estoy utilizando CodeIgniter y hago lo siguiente:
Código PHP:
 $query $this->db->query('SELECT idUnidad as id  FROM unidades WHERE seguimiento=1 and showpath=1 and empresa_Id='.$_GET['queryIdEmpresa']);
        foreach(
$query->result_array() as $row)
        {
          
          
$sub_query $this->db->query('SELECT idTrack,id_Unidad as id,latitud as lat,longitud as lon,altitud,colorlinea as color FROM track WHERE id_Unidad='.$row["id"].' '.'ORDER BY idTrack DESC LIMIT 2');
          foreach(
$sub_query->result_array() as $sub_row)
           {
                
$trackerunitpos[] = $sub_row;
                 
           }     
         
        } 
        echo 
json_encode($trackerunitpos); 
y obtengo el siguiente resultado Json:

[{"idTrack":"16","id":"14","lat":"21.17359268607126 7","lon":"-86.8281233650207","altitud":"3","color":"#DF0101"} ,{"idTrack":"15","id":"14","lat":"21.1741129210465 43","lon":"-86.82679298934931","altitud":"3","color":"#DF0101" },{"idTrack":"25","id":"16","lat":"21.173922835397 384","lon":"-86.82670849976535","altitud":"3","color":"#0000FF" },{"idTrack":"21","id":"16","lat":"21.174052894023 895","lon":"-86.8267353218555","altitud":"3","color":"#0000FF"}]


Ahora bien necesito agrupar estos datos de tal forma que me quede algo asi:
Código PHP:

[{"id":"14","lat":"21.173592686071267","lon":"-86.8281233650207","altitud":"3","color":"#DF0101"},{"id":"14","lat":"21.174112921046543","lon":"-86.82679298934931","altitud":"3","color":"#DF0101"}],[{"id":"16","lat":"21.173922835397384","lon":"-86.82670849976535","altitud":"3","color":"#0000FF"},{"id":"16","lat":"21.174052894023895","lon":"-86.8267353218555","altitud":"3","color":"#0000FF"}] 
[{"id":"14","lat":"21.173592686071267","lon":"-86.8281233650207","altitud":"3","color":"#DF0101"} ,{"id":"14","lat":"21.174112921046543","lon":"-86.82679298934931","altitud":"3","color":"#DF0101" }],

[{"id":"16","lat":"21.173922835397384","lon":"-86.82670849976535","altitud":"3","color":"#0000FF" },{"id":"16","lat":"21.174052894023895","lon":"-86.8267353218555","altitud":"3","color":"#0000FF"}]

Más que nada es agruparlos por el id, ya he hecho esto, como lo de la liga anterior pero no lo esta agrupando como lo necesito., les mando una imagen de mi tabla , saludos y de antemano muchas gracias.


P.D Disculpen si no puse las etiquetas de codigo, es para que se entienda un poco más de lo que hablo.

Última edición por iceberg; 28/03/2014 a las 12:29 Razón: Mal
  #2 (permalink)  
Antiguo 28/03/2014, 15:10
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: Agrupar los resultados Json

Pues construye el arreglo como lo requieres

Código PHP:
Ver original
  1. foreach($sub_query->result_array() as $sub_row){
  2.       $trackerunitpos[] = array(
  3.             'id'=>$row["id"],
  4.             'lat'=>$sub_row['lat'],
  5.             'lon'=>$sub_row['lon'],
  6.             //.....etc
  7.        );
  8. }
  #3 (permalink)  
Antiguo 28/03/2014, 16:59
 
Fecha de Ingreso: junio-2013
Mensajes: 8
Antigüedad: 10 años, 10 meses
Puntos: 1
Respuesta: Agrupar los resultados Json

Cita:
Iniciado por ocp001a Ver Mensaje
Pues construye el arreglo como lo requieres

Código PHP:
Ver original
  1. foreach($sub_query->result_array() as $sub_row){
  2.       $trackerunitpos[] = array(
  3.             'id'=>$row["id"],
  4.             'lat'=>$sub_row['lat'],
  5.             'lon'=>$sub_row['lon'],
  6.             //.....etc
  7.        );
  8. }
Muchas gracias mi estimado, al final de cuentas hice esto, como bien tu indicas:
Código:
$trackerunitpos = array();
		$trackerunitpos_js='';	
        $query = $this->db->query('SELECT idUnidad as id  FROM unidades WHERE seguimiento=1 and showpath=1 and empresa_Id='.$_GET['queryIdEmpresa']);
		foreach($query->result_array() as $row)
		{
		  
				 $sub_query = $this->db->query('SELECT id_Unidad as id,latitud as lat,longitud as lon,altitud,colorlinea as color FROM track WHERE id_Unidad='.$row["id"].' '.'ORDER BY idTrack DESC LIMIT 2');
				 foreach($sub_query->result_array() as $sub_row)
				{
					$unit=$row["id"];			
										
					  $trackerunitpos[$unit][] = array(
							'id'=>$row['id'],
							'lat'=>$sub_row['lat'],
							'lon'=>$sub_row['lon'],
							'altutud'=>$sub_row['altitud'],
							'color'=>$sub_row['color']
					   );					 
				}	 
		 
		} 
		  echo json_encode($trackerunitpos);
y el resultado:
{"14":[{"id":"14","lat":"21.173592686071267","lon":"-86.8281233650207","altutud":"3","color":"#DF0101"} ,{"id":"14","lat":"21.174112921046543","lon":"-86.82679298934931","altutud":"3","color":"#DF0101" }],"16":[{"id":"16","lat":"21.173922835397384","lon":"-86.82670849976535","altutud":"3","color":"#0000FF" },{"id":"16","lat":"21.174052894023895","lon":"-86.8267353218555","altutud":"3","color":"#0000FF"}]}

Saludos cordiales.

Etiquetas: agrupar, json, resultados, select, tabla
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 06:15.