Ver Mensaje Individual
  #1 (permalink)  
Antiguo 31/10/2014, 07:32
Avatar de armandoweb
armandoweb
 
Fecha de Ingreso: enero-2003
Ubicación: San Cristobal, Santa Fe, Argentina
Mensajes: 544
Antigüedad: 21 años, 3 meses
Puntos: 7
Generar array con datos de una consulta

Amigos:
Genero una consulta a la base de datos y obtengo estos datos en $trabajos_array:

nombre | fecha_ingreso | hora_ingreso | fecha_egreso | hora_egreso

Los datos que extraigo son: nombre: nombre de la persona, fecha y hora ingreso: es el dia y hora que ingresa un trabajo, y fecha y hora egreso: fecha y hora que se termina.
El array que debo crear debería tener este formato:

Código PHP:
Ver original
  1. (
  2.     [0] => Array
  3.         (
  4.             [tecnico] => Pedro
  5.             [bien] => 15
  6.             [mal] => 2
  7.         )
  8.  
  9.     [1] => Array
  10.         (
  11.             [tecnico] => Juan
  12.             [bien] => 19
  13.             [mal] => 3
  14.         )
  15.  
  16.     [2] => Array
  17.         (
  18.             [tecnico] => Martin
  19.             [bien] => 18
  20.             [mal] => 5
  21.         )
  22.  
  23. )

Los datos a mostrar son: tecnico es el nombre de la persona, y bien y mal son los trabajos hechos que sobrepasan la media hora, es decir, si el trabajo hecho por Pedro por ejemplo es entregado antes de la media hora debe sumarse 1 a bien, de lo contrario se sumara 1 a mal.

Este es codigo que tengo hecho hasta el momento:

Código PHP:
Ver original
  1. $resultado = array();
  2. $nombres = array();
  3. $bien   = 0;
  4. $mal    = 0;
  5.  
  6. for($i = 0; $i < count($trabajos_array); $i++) {
  7.  
  8.         //aqui hago el calculo para saber si el
  9.         $date1 = new DateTime(date('Y-m-d', strtotime($trabajos_array[$i]['fecha_ingreso'])) . $trabajos_array[$i]['hora_ingreso']);
  10.         $date2 = new DateTime(date('Y-m-d', strtotime($trabajos_array[$i]['fecha_egreso '])) . $trabajos_array[$i]['hora_egreso']);
  11.         $interval = $date1->diff($date2);
  12.         $diferencia = $interval->format('%i');
  13.  
  14.         $nombres[] = $trabajos_array[$i]['nombre'];  
  15.  
  16.         if ($diferencia <= '30') {
  17.                    
  18.             $bien = $bien + 1;
  19.                
  20.     } else {
  21.                    
  22.         $mal = $mal + 1;
  23.                
  24.         }
  25.  
  26. }
  27.  
  28. //aqui armo el array de nombres unicos         
  29. $tecnicos = array();
  30. foreach ($nombres as $key => $val) {
  31.         if (!in_array($val, $tecnicos, true)) {
  32.         $tecnicos[] = $val;
  33.     }
  34. }
  35.  
  36. //aqui genero el array final
  37. for($i = 0; $i < count($tecnicos); $i++) {
  38.     $resultado[$i]['tecnico'] = $tecnicos[$i];
  39.     $resultado[$i]['bien'] = $bien;
  40.         $resultado[$i]['mal'] = $mal;
  41. }

Lo que me genera es último array es:

Código PHP:
Ver original
  1. (
  2.     [0] => Array
  3.         (
  4.             [tecnico] => Juan Uranda
  5.             [bien] => 3
  6.             [mal] => 0
  7.         )
  8.  
  9.     [1] => Array
  10.         (
  11.             [tecnico] => Martin Perez
  12.             [bien] => 3
  13.             [mal] => 0
  14.         )
  15.  
  16. )

Mi código falla en mostrar las cantidades de tareas de cada uno ya que el total es 3, Juan tiene hechas 2 tareas y Martin solo 1.

Como puedo modificar mi código para que me muestre correctamente las cantidades de trabajos de cada uno?

Desde ya muchas gracias por su ayuda!
__________________
www.awdesarrollos.com.ar - [twitter: @armandoweb] - [Skype: awdesarrollos"]