PHP - base de datos para control asistencia

 
Vista:
sin imagen de perfil
Val: 10
Ha aumentado su posición en 18 puestos en PHP (en relación al último mes)
Gráfica de PHP

base de datos para control asistencia

Publicado por pedro (4 intervenciones) el 08/08/2018 04:41:59
Hola:
el echo es que quiero que me echen una mano con es esquema de como seria el diseño de una base de datos para cubrir un sistema de asistencia con las siguientes caracteristicas:

1. es para llevar la asistencia a reuniones de personas (socios). no es para marcar entrada y salida.
2. por ejemplo se planea una reunion para el 20 de agosto. todos los socios estan citados a la 7.30 am. el dia de la reunion cada socio va llegando a local y se le registra como asistió, los que llegaron pasado esa hora , se le registra como tarde, y los que no se registraron se le marca como falta.
3. los que llegaron tarde tiene un multa de s/ 1.00
4. los que no asistieron tienen un multa de s/. 300.
5. se necesita saber cuanto debe cada socio.

gracias por su ayuda, no se como diseñar la base de datos. a primera intencional hice:

tabla socio registrar personas Socios
tabla evento registrar las reuniones programadas
tabla asistencia registrar la asistencia

¿como hago eso de las multas?

hummm. me equivoque de foro, disculpe mod, por favor muevan el tema que no se como hacerlo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 29
Ha aumentado su posición en 8 puestos en PHP (en relación al último mes)
Gráfica de PHP

base de datos para control asistencia

Publicado por stty (9 intervenciones) el 08/08/2018 11:39:53
pues así a priori creo que faltaría saber que campos tienen esas tablas, pero entiendo que la tabla asistencia es la que cruza socios y reuniones, con lo cual aquí tienes las ID de ambas tablas y el "estado" de socio en esta reunión, pongamos que este campo "estado" es un entero y tomas como criterio:

0 = no ha asistido
1 = retraso
2 = ha asistido

con lo cual puedes hacer:

1
SELECT COUNT(*) FROM asistencia WHERE estado = 0


multiplicar el numero que salga del contador por 300

y otro
1
SELECT COUNT(*) FROM asistencia WHERE estado = 1

multiplicar el numero que salga del contador por 100


espero haber ayudado :)
saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 729
Bronce
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

base de datos para control asistencia

Publicado por Gonzalo (615 intervenciones) el 08/08/2018 18:42:23
buenas noches don Pedro.

parece mas para el foro de MySql, pero igual se puede hacer en php.

Tablas:

Socios (regisro de las personas que van a estar invitadas, pueden ser todos o solo algunos)
Eventos (aqui se registra el nombre del evento, la fecha y la hora en que se va a llevar a cabo una reunion o evento)
Invitados (registras los id de los socios que deben asistir)

en eventos pudieras tambien registrar al organizador o moderador.
en Invitados entonces registras quienes fueron invitados, quienes asistieron, quienes llegaron tarde, quienes no asistieron, y las multas.

para las multas necesitas tomar en cuenta la fecha y hora en la que llegaron, los que no tengan fecha (null) tienen una multa, los que se pasaron de cierta hora tienen su multa, etc.

lo demas son reportes, lo puedes hacer como vista o por query.

suerte

salu2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 10
Ha aumentado su posición en 18 puestos en PHP (en relación al último mes)
Gráfica de PHP

base de datos para control asistencia

Publicado por Pedro (4 intervenciones) el 08/08/2018 23:48:54
db-asistencia


gracias por ambas respuestas. me ayudaron a llegar a esto (img que subí).
quiero añadir :


1. añadí una tabla usuarios para las personas con acceso al sistema. (en este caso la persona que registra asistencia y cobrar la multa)
2. todos los socios esta obligados a ir.
3. añadí un tabla multas por el echo que existen varios tipo de eventos, y una multa determinada para cada uno de ellos. por ejemplo: reunión ordinaria y reunion extraordinaria.
4. añadí tabla pago para llevar un registro de de los pagos que hacen los socios por conceptos de multas.


des esto deseo obtener:
registro de uasurios (echo)
registro de socios (echo)
registro de evento (echo)
registro de asistencia (echo)
registro de deuda por socio con detalle de los eventos que no asistió (no se como se hace)
registro del pago (también no se como se hace)

echenme una mano, por favor.


sigo insistiendo que me equivoque, debería ir en el foro de db. pero encaja en ambos .
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 729
Bronce
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

base de datos para control asistencia

Publicado por Gonzalo (615 intervenciones) el 09/08/2018 01:45:14
esta bien, yo la simplificaria un poco.

asistencia, multa y pago pueden quedar en una sola tabla, solo agregaria un booleano que diga "multa", si tiene multa por retraso o por no asistir ahi elijes el monto.

por lo demas se ve bien.

salu2.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 29
Ha aumentado su posición en 8 puestos en PHP (en relación al último mes)
Gráfica de PHP

base de datos para control asistencia

Publicado por stty (9 intervenciones) el 09/08/2018 11:11:35
Exacto, como dice Gonzalo, puedes simplificarlo con tal de no hacer las query tan largas, añadiendo el campo monto y cobrado dentro de la tabla asistencia, a parte (también lo dijo Gonzalo) te faltará saber a que hora registran su asistencia los socios para saber si llegan tarde o no, quedando así:

1
2
3
4
5
6
7
8
9
ASISTENCIA
 
idasistencia
idsocio
idevento
estado
fechahora_llegada
monto_multa
multa_cobrada

E incluso si siempre van a ser los mismos socios y tienen que irse registrando, puedes también usar la tabla socios como tabla usuarios, aprovechando así los datos para los diferentes eventos.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 10
Ha aumentado su posición en 18 puestos en PHP (en relación al último mes)
Gráfica de PHP

base de datos para control asistencia

Publicado por Pedro (4 intervenciones) el 09/08/2018 22:11:00
bdasistencia2

antes de nada , gracias por sus consejos, stty, Gonzalo , estoy esmerándome en aprender (leyendo la documentación) pero lamentablemente algunas cosas no vienen plasmadas allí, como la lógica de implementación, supongo eso es lo que diferencia a los novatos como yo de los programadores de vocación.

ya termine con la base., o al menos eso pienso.

recuerden:
1. que todo los socios están obligados a asistir al evento creado si no les cae multa.
2. la tabla usuario no son socios. (ejemplo secretaria)


la pregunta es.

Al iniciar , se registra el evento (la reunión), ¿se registran en la tabla usuario a todos los socios que deben asistir ,con el estado de falta? ¿mientras lleguen se registran y se cambia ese estado por asistió o tardanza?

O al iniciar, se registra el evento luego se van llenado la tabla asistencia solo con las personas que asistieron. y los que faltaron no existiran en es tabla asistencia.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 29
Ha aumentado su posición en 8 puestos en PHP (en relación al último mes)
Gráfica de PHP

base de datos para control asistencia

Publicado por stty (9 intervenciones) el 10/08/2018 10:08:09
De ahi venia mi propuesta de unir la tabla usuarios a la tabla socios, yo lo que haría seria registrar usuarios/socios (inclusive secretari@), vayan o no a los eventos) y a la hora de crear el evento, seleccionar que usuarios/socios (ya registrados) que deben asistir al evento (ya que necesitas una lista completa de los asistentes para saber quien falta y quien no), como ya tienes a las personas registradas en la bd (tanto las que van, como las que no) solo seleccionarías las que te interesarían para dicho evento, a parte teniendo sistema de permisos y correo electrónico como has puesto en la tabla usuarios, puedes usar "niveles" de usuarios para que administren o no eventos o únicamente ver los eventos a los que tienen que ir y tener un perfil de usuario y la pasta que deben y/o se han gastado en multas o llevar estadísticas de falta de asistencia por usuario (que eso lo puedes hacer igual con las tablas separadas pero como yo lo propongo permites acceso al propio usuario a verlo (incluso a hacer un sistema de mailing que envié recordatorios de las multas o de monto de dinero que deben)

No se, eso ya depende del "nivel" al que quieras tratar el proyecto, pero (en ambos casos juntes o no las tablas de usuarios y socios) la respuesta a tu pregunta, creo que la mejor opción es la primera que has preguntado: abrir un evento y luego de alguna manera asignar los socios (ya registrados) que deben asistir a ese evento con el estado en "falta", que es el que quedará por defecto si no asisten y en cuanto se registran se les cambia el estado a "asistencia" o "retraso" según la hora de registro.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 729
Bronce
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

base de datos para control asistencia

Publicado por Gonzalo (615 intervenciones) el 11/08/2018 02:33:49
ok, recuerda que programar es 30% planeacion, 30% implementacion y 40% logica, asi que vamos paso a paso.

ya creaste las bases de datos, asi como las relacionaste estan bien, ahora hay que crear las paginas para alimentar las bases de datos.

vas a necesitar varias paginas:

1 registrar/editar socios (sin socios no puedes crear un evento)
2 crear/editar eventos, al crear el evento debes registrar los socios que van a estar en el evento (valga la redundancia)
3 inscribir socios al evento (incluye una opcion en caso de que algun socio avise que no puede asistir)

una vez creado el evento y registrado los asistentes entonces debes esperar a la fecha en que se realiza el evento y pasar lista.

en este caso segun se van presentando debes registrar la fecha y hora en la que checo su asistencia asi que necesita una pagina extra

4 Registrar asistencia

uan vez terminado el evento entonces revisas el evento y evalúas la asistencia asi que necesitas otra pagina

5 Comprobar asistencia (segun el evento) y marcar solo a quienes llegaron despues de cierta hora y que no registraron su asistencia y aplicas la multa correspondiente, al mismo tiempo debes mostrar el listado de quienes deben y quienes cumplieron.

6 algo extra que se nos haya olvidado.

y listo.

es un buen de codigo pero como lo tienes dividido en partes va a ser mas facil.

esto complementa el 30 de la planeacion y el 40 de la logica, viene lo bueno que es el 30 de la implementacion.

salu2.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 10
Ha aumentado su posición en 18 puestos en PHP (en relación al último mes)
Gráfica de PHP

base de datos para control asistencia

Publicado por Pedro (4 intervenciones) el 12/08/2018 04:02:22
Gracias nuevamente, he modificado la tabla socios, la he renombrado como , usuarios, y tiene una columna donde indica si es socio o personal administrativo.

pienso que ya puedo iniciar con la creación de html, para cada una de las vistas. estoy indagando y pensando usar bosstrap o material para esto, unido con adminlte. una ves terminado esto de seguro que vengo con preguntas con la implementacion del código php. ya lo habia desarrollado en procedimental, pero me llama la atención aprender algún framework.

gracias hasta pronto. les pongo las vista en este hilo cuando las tenga preparada.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar