Ver Mensaje Individual
  #3 (permalink)  
Antiguo 21/09/2014, 12:11
Avatar de nibollo
nibollo
 
Fecha de Ingreso: julio-2012
Mensajes: 22
Antigüedad: 11 años, 10 meses
Puntos: 2
Respuesta: Ordenar array por claves (iguales) y combinarlos en el mismo PHP

Holaaas! antes que nada quisiera agradecer que me hayas respondido!!!!.. Me parecio muy interesante en como lo resolviste la verdad que yo me complique demasiado :S :S

Lo implemente asi y casi acertaste la forma en que estan vinculadas las tablas.. jajaja :)

Código PHP:
Ver original
  1. private function superArray() {
  2.         if ($this->get_request_method() != "GET") {
  3.             $this->response('', 406);
  4.         }
  5.         $result  = array();
  6.         $query_0 = "SELECT c_id, c_areas
  7.            FROM tbl_areas
  8.            ORDER BY c_id ASC";
  9.         $sql_0 = $this->db->query($query_0);
  10.         while ($row_0 = $sql_0->fetch_array(MYSQLI_ASSOC)) {
  11.             $c_areas = $row_0['c_areas'];
  12.             $query_1 = "SELECT DISTINCT a_fecha
  13.                      FROM tbl_activities c
  14.                      INNER JOIN tbl_areas d on d.c_areas = c.a_area
  15.                      WHERE c.a_area = '$c_areas' ORDER BY c.a_area ASC";
  16.             $sql_1 = $this->db->query($query_1);
  17.             while ($row_1 = $sql_1->fetch_array(MYSQLI_ASSOC)) {
  18.                 $dias    = array('Lunes', 'Martes', 'Miercoles', 'Jueves', 'Viernes', 'Sabado', 'Domingo');
  19.                 $a_fecha = $row_1['a_fecha'];
  20.  
  21.                 $date  = new DateTime($row_1['a_fecha'] . '-2014');
  22.                 $mmpp  = $date->format('Y-m-d');
  23.                 $fecha = $dias[date('N', strtotime($mmpp)) - 1];
  24.                 $rem   = array('a_fecha' => $fecha);
  25.                 $row_1 = array_replace($row_1, $rem);
  26.                 $row_1 = array_flip($row_1);
  27.  
  28.                 $query_2 = "SELECT a_fecha,a_inicio,a_fin,a_lugar,a_area,a_tema,a_disertante,a_institucion,a_id
  29.                         FROM tbl_activities c
  30.                         INNER JOIN tbl_areas d ON d.c_areas = c.a_area
  31.                         WHERE c.a_area =  '$c_areas' AND c.a_fecha = '$a_fecha'
  32.                         ORDER BY c.a_area ASC";
  33.  
  34.                 $sql_2 = $this->db->query($query_2);
  35.                 while ($row_2 = $sql_2->fetch_array(MYSQLI_ASSOC)) {
  36.                     $rem      = array($fecha => [$row_2]);
  37.                     $row_1    = array_replace($row_1, $rem);
  38.                     $result[] = $row_0+$row_1;
  39.                 }
  40.             }
  41.         }
  42.         print_r($result);
  43.     }

lo hice asi y casi casi casi casi casi salio perfecto, antes de subirlo aca estuve unas 10 horas intentando realizarlo de la otra manera, no crei que seria tan sencillo con tu ayuda :)

Código Array:
Ver original
  1. Array
  2. (
  3.     [0] => Array
  4.         (
  5.             [c_id] => 1
  6.             [c_areas] => Biomateriales
  7.             [Martes] => Array
  8.                 (
  9.                     [0] => Array
  10.                         (
  11.                             [a_fecha] => 23-9
  12.                             [a_inicio] => 16:00
  13.                             [a_fin] => 16:45
  14.                             [a_lugar] => Aula B01
  15.                             [a_area] => Biomateriales
  16.                             [a_tema] => PolÃ*tica Nacional de CTI
  17.                             [a_disertante] => Ing. QuÃ*mica Mónica Casanueva
  18.                             [a_institucion] => Consejo Nacional de Ciencia y TecnologÃ*a - CONACYT
  19.                             [a_id] => 3
  20.                         )
  21.  
  22.                 )
  23.  
  24.         )
  25.  
  26.     [1] => Array
  27.         (
  28.             [c_id] => 1
  29.             [c_areas] => Biomateriales
  30.             [Jueves] => Array
  31.                 (
  32.                     [0] => Array
  33.                         (
  34.                             [a_fecha] => 25-9
  35.                             [a_inicio] => 14:30
  36.                             [a_fin] => 15:00
  37.                             [a_lugar] => Aula B01
  38.                             [a_area] => Biomateriales
  39.                             [a_tema] => Cromo Hexavalente en la industria: Precauciones y método de
  40. depuración
  41.                             [a_disertante] => Univ. Aquino Valdovinos
  42.                             [a_institucion] => Facultad Nacional
  43.                             [a_id] => 26
  44.                         )
  45.  
  46.                 )
  47.  
  48.         )
  49.  
  50.     [2] => Array
  51.         (
  52.             [c_id] => 1
  53.             [c_areas] => Biomateriales
  54.             [Jueves] => Array
  55.                 (
  56.                     [0] => Array
  57.                         (
  58.                             [a_fecha] => 25-9
  59.                             [a_inicio] => 15:30
  60.                             [a_fin] => 16:00
  61.                             [a_lugar] => Aula B01
  62.                             [a_area] => Biomateriales
  63.                             [a_tema] => Horno a Inducción para la fundición de metales
  64.                             [a_disertante] => Univ. Hugo Armando
  65.                             [a_institucion] => Materiales y GIEM -
  66.                             [a_id] => 27
  67.                         )
  68.  
  69.                 )
  70.  
  71.         )

Pero, hay un pero :S sera que no se podria combinar de esta manera?

Código Array :s:
Ver original
  1. Array
  2. (
  3.     [0] => Array
  4.         (
  5.             [c_id] => 1
  6.             [c_areas] => Biomateriales
  7.             [Martes] => Array
  8.                 (
  9.                     [0] => Array
  10.                         (
  11.                             [a_fecha] => 23-9
  12.                             [a_inicio] => 16:00
  13.                             [a_fin] => 16:45
  14.                             [a_lugar] => Aula B01
  15.                             [a_area] => Biomateriales
  16.                             [a_tema] => PolÃ*tica Nacional
  17.                             [a_disertante] => Ing. Casanueva
  18.                             [a_institucion] => Consejo Nacional de Ciencia y TecnologÃ*a -
  19.                             [a_id] => 3
  20.                         )
  21.            [Jueves] => Array
  22.                 (
  23.                     [0] => Array
  24.                         (
  25.                             [a_fecha] => 25-9
  26.                             [a_inicio] => 14:30
  27.                             [a_fin] => 15:00
  28.                             [a_lugar] => Aula B01
  29.                             [a_area] => Biomateriales
  30.                             [a_tema] => Cromo Hexavalente en la industria: Precauciones y método de
  31. depuración
  32.                             [a_disertante] => Univ. Aquino Valdovinos
  33.                             [a_institucion] => Facultad Holi
  34.                             [a_id] => 26
  35.                         )
  36.  
  37.  
  38.                 )
  39.  
  40.         )

Osea, que los dias esten juntos.. No puedo encontrar una manera de simplificar la salida(por la c_id y c_area)? :S Gracias :))

Y disculpa que plantee problemas muy complejos :v jajajj

Última edición por nibollo; 21/09/2014 a las 12:17