Ver Mensaje Individual
  #7 (permalink)  
Antiguo 23/09/2013, 14:40
vosk
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 12 años, 2 meses
Puntos: 83
Respuesta: problema con planeacion de sistema

Segun este planteamiento lo mejor parece que sería sacar una lista de alumnos a un array y una lista de asistencias a otro array, luego simplemente comparas los arrays para ver quien no está. Si lo haces en php: al momento de convertir la lista obtenida a array puedes generar un array asociativo con los nº de control como clave y los demas datos como valor en forma de array:

Código PHP:
Ver original
  1. $alumnos = array();
  2. $query = "SELECT * FROM alumnos";
  3. if(($result = $mysqli->query($query))) {
  4.     while($alumno = $result->fetch_assoc()) {
  5.         $alumnos[$alumno['ncontrol']] = array('nombre' => $alumno['nombre'], 'grupo' => $alumno['grupo']);
  6.     }
  7.     $result->free();
  8. }

Esto te genera un array del tipo:

Código PHP:
Ver original
  1. (
  2.     [9090909090] => Array
  3.         (
  4.             [nombre] => jazmin jp
  5.             [grupo] => sistemas 30123
  6.         )
  7.  
  8.     [0101010101] => Array
  9.         (
  10.             [nombre] => alberto r
  11.             [grupo] => sistemas 30123
  12.         )
  13.  
  14.     [9393939393] => Array
  15.         (
  16.             [nombre] => juan carl
  17.             [grupo] => sistemas 34567
  18.         )
  19.  
  20. )

Con esto tienes la lista de alumnos, luego haces lo mismo para las asistencias pero filtrando las fechas o tal como quieras hacerlo; si quieres saber las asistencias/ausencias de una semana solo tienes que hacer la query sobre la tabla de asistencias indicando que la fecha este entre el lunes y el viernes de esa semana que quieres comprovar. Obtienes el resultado y lo conviertes de la misma forma a array asociativo con los nº de control como clave. Con esto puedes usar las funciones de php de arrays para saber que elementos no estan en la lista de asistencias comparando las claves de los array (traducido significa que esos alumnos no estuvieron presentes ningun dia de ese rango de tiempo, y si quieres dar los resultados mas exactos solo has de filtrar por dias).

Esta idea te da mucho juego porque a la hora de armar el array de alumnos puedes añadir un campo extra no existente en la base de datos que sería una lista de asistencias (por dias, por semanas, por meses, tal como quieras) para que facilmente pudieras generar los reportes de asistencia por alumnos. Ten en cuenta que segun este modelo el campo 'asistencia' de la tabla 'asistencias' no tiene sentido porque todos los registros de esa tabla habran asistido.

Saludos
vosk