Ver Mensaje Individual
  #5 (permalink)  
Antiguo 23/01/2012, 14:10
Avatar de ecarlevaro
ecarlevaro
 
Fecha de Ingreso: octubre-2010
Ubicación: Paraná, Argentina
Mensajes: 80
Antigüedad: 13 años, 6 meses
Puntos: 13
Respuesta: sistema de Asistencias de un liceo

Bueno, yo preferiría hacerlo a través de la base de datos, MySQL si es que usas esa base, aunque con esa estructura de tabla que tiene la tabla horario posiblemente no sea tan facil y habría que cambiar la estructura de la tabla. En cualquier caso te podrías pasar por el foro de MySQL, cuentan que hay una serie de genios por allá que pueden obtener cualquier dato de una base de datos.

Pero como dices que lo quieres hacer con PHP, yo empezaría por poder averiguar por cada maestro si llegó tarde o no y despues trabajar en analizar todos los maestros.
En ese caso tendríamos una variables $id que tendría la id del maestro que queremos averiguar como llegó. Para simplificar la exposición supongamos que solamente queremos controlar los horarios de entrada.
Primero hacemos las consultas a la base de datos, de los registros de ese maestro de asistencias y los horarios que les corresponde venir.
Luego convertimos las fechas de los registros de asistencias que nos da MySQL que tipicamente tienen el formato 'YYYY-MM-DD' que PHP los reconoce como cadenas, strings, por lo que no nos permite operar con ellas, a integer, con la funcion strtotime().
Luego con getdate() obtengo una matriz con datos de esa fecha, esa matriz en la clave 'wday' contiene el número de dia de la semana, 0 para domingo y 6 para el sabado.
Una vez que sabemos el dia de la semana que corresponde a esa fecha, nos vamos a la matriz $horarios que tiene los horarios que le corresponden a ese maestro, ya que esta matriz comienza con el 0 para domingo y el 6 para lunes (prestar atencion a la estructura de la consulta SQL).
Finalmente un simple IF que si la hora de entrada es menor a la hora a la que se debió entrar se notifica con 'TARDE'.

Código PHP:
Ver original
  1. <?
  2.  
  3. //Ya conectados con la base de datos
  4.  
  5. //Consulto por las asistencias reales para el id $id
  6. $id = 1;
  7. $consulta = "SELECT fecha,he,hs FROM registro WHERE id='$id'";
  8. $resultadoR = mysqli_query($enlace,$consulta);
  9. //Consulto por los horarios correspondientes para ese maestro (devuelve una sola fila de resultados)
  10. $consulta = "SELECT de,le,me FROM horarios WHERE id='1' LIMIT 1";
  11. $resultadoH = mysqli_query($enlace,$consulta);
  12. //Recupero ese resultado en una matriz numérica desde 0 hasta 6 (los 7 dias de la semana) llamada $horario
  13. $horario = mysqli_fetch_row($resultadoH);
  14.  
  15. //Maqueto un poco con HTML
  16. echo '<p>Asistencias de maestros</p>
  17. <table>
  18. <tr>
  19. <th>Fecha</th>
  20.     <th>Entrada observada</th>
  21.     <th>Entrada correspondida</th>
  22.     <th>ESTADO</th>
  23. </tr>';
  24.  
  25. //Recorro los resultados del registro de asistencias con un while y guardando en $fila el resutlado
  26. while ($fila = mysqli_fetch_array($resultadoR))
  27. {
  28.  //Convierto la cadena (string) que me devuelve MySQL de tipo '2012-23-01' a una de tipo integer que pueda manejar con las funciones de fecha y hora de PHP
  29.  $fila['fecha'] = strtotime($fila['fecha']);
  30.     //Obtengo una matriz con informacion sobre esa fecha, me interesa la clave 'wday' que me da el dia de la semana comenzando por el 0 para el domingo y el 6 para el sabado
  31.     $dia = getdate($fila['fecha']);
  32.     echo "
  33.     <tr>
  34.      <td>". date('d-n-Y',$fila['fecha']). "</td>
  35.         <td>{$fila['he']}</td>
  36.         <td>{$horario[$dia['wday']]}</td>
  37.         <td>";
  38.     if ($horario[$dia['wday']] < $fila['he'])
  39.     {
  40.      echo '<b>TARDE</b>';
  41.     }
  42.     else
  43.     {
  44.      echo 'Bien';
  45.     }
  46.     echo '</td>
  47.     </tr>';
  48. }
  49. echo '</table>';
  50.  
  51. ?>