Foros del Web » Programando para Internet » PHP »

Como puedo llegar a realizar lo siguiente

Estas en el tema de Como puedo llegar a realizar lo siguiente en el foro de PHP en Foros del Web. Hola todos, perdon por el titulo pero no encuentro las palabras para explicar mi situacion. Bueno un amigo se hizo poseedor de un comedor de ...
  #1 (permalink)  
Antiguo 08/03/2009, 08:54
 
Fecha de Ingreso: octubre-2008
Mensajes: 112
Antigüedad: 15 años, 6 meses
Puntos: 1
Como puedo llegar a realizar lo siguiente

Hola todos, perdon por el titulo pero no encuentro las palabras para explicar mi situacion.

Bueno un amigo se hizo poseedor de un comedor de un colegio, y me pidio que le hiciera un sistema php, desde el cual pudiera manejar, los alumnos que van, pero se me esta complicando el diseño de la base de datos ya que cada idea que tengo me parece mala y que ocupara mucho lugar, con campos que no debieran existir.

Bien procedo a explicar lo que necesito a ver si me pueden dar ideas para el diseño.

Primero y principal la tabla alumnos en la cual esta el registro de cada alumno eso esta claro.

2do, hay alumnos que se quedan ciertos dias algunos contratan por ejemplo lunes miercoles y viernes, otros contratan toda la semana por adelantado y otros en el dia dan el si o el no. entonces esta parte se me complica...

a mi me gustaria que cuano en el sistema ponga dia por ej. hoy 08/03/2009, aparezca la lista de niños que se quedaran.

yo esto tenia pensado hacerlo en una tabla a parte poner los siguientes campos IDalum - dia, y que eso se llene por ejemplo asi
1 - 23-02-2009
1 - 24-02-2009
1 - 25-02-2009
2 - 23-02-2009
etc - etc....

pero cual es el problema, la carga... me gustaria que esos niños que contratan por ejemplo una cierta cantidad de dias se pudieran registrar automaticamente, es decir supongamos la semana que viene vienen 2 madres una contrata los servicios de mi amigo, por toda la semana y la otra solo lunes martes y viernes....

entoces mi idea seria hacer lo siguiente poner en el formulario de carga
lunes - martes - miercoles - jueves - viernes
Cada uno con su input Radio y si por ejemplo yo selecciono lunes - martes - viernes

Me cargue automaticamente suponiendo que es el alumno numero 1

1 - 09-03-2009
1 - 10-03-2009
1 - 13-03-2009

y cuando cargo el alumno 2 selecciono todos los dias y me carga automaticamente

2 - 09-03-2009
2 - 10-03-2009
2 - 11-03-2009
2 - 12-03-2009
2 - 13-03-2009

Bueno yo creo que la base estaria en la forma de tomar el dia actual. o simplemente lo puedo añadir yo sin problema pero si hay alguna forma de que tome el dia actual para las cargas estaria excelente, y luego realizar sumas en los dias... si elijen lunes guardar el dia actual, si elijen martes, guardar el dia + 2, si eligen miercoles guardar dia + 3 y asi sucesivamente.

Tambien lo interesante sería saber si hay forma de que php detecte el nombre de cada dia, asi si por ejemplo es miercoles que no me muestre los dias lunes y martes para seleccionarlos.

Bueno desde ya muchas gracias a quien pueda ayudarme.

Saludos.

Última edición por Daitron; 08/03/2009 a las 09:02
  #2 (permalink)  
Antiguo 08/03/2009, 09:49
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: [AYUDA]Como puedo llegar a realizar lo siguiente

La forma en la que estas estructurando tu base de datos es la correcta.

Cita:
lunes - martes - miercoles - jueves - viernes
Cada uno con su input Radio y si por ejemplo yo selecciono lunes - martes - viernes
Quisiste decir checkboxes :P

Ahora mismo se me ocurre,
En el formulario en el value de cada checkbox para el dia actual le pongo un 0, para el proximo dia un 1, para el proximo un 2, y asi sucesivamente. Entonces el valor sera los dias que le sumaras a la fecha actual para reservar.

Para saber el dia actual puedes hacer: date('l') //L minuscula o tambien puedes usar date('N')
http://www.php.net/manual/en/function.date.php

Otra opcion es usar strtotime para hacer algo como:
Código PHP:
<?php
$proximoLunes 
date('Y-m-d'strtotime('next Monday'));
$proximoMartes date('Y-m-d'strtotime('next Tuesday'));
//etc etc etc
?>
Lo unico es que dependiendo el dia deberias crear el formulario de 1 manera u otra.
  #3 (permalink)  
Antiguo 08/03/2009, 10:01
Avatar de webness  
Fecha de Ingreso: enero-2009
Ubicación: BOGOTA
Mensajes: 312
Antigüedad: 15 años, 3 meses
Puntos: 5
Respuesta: [AYUDA]Como puedo llegar a realizar lo siguiente

Te estas complicando mucho la vida.

PHP posee funciones de manejo de fechas, creo que son Date o getDate, mediante las cuales tu puedes obtener el numero del dia de la semana que es a partir de la fecha actual, es decir para domingo devuelve 0, lunes=1, martes=2, etc.

Entonces mas bien en una tabla tienes los datos basicos de los alumnos, en otra tabla puedes tener lo datos parametriazados de los dias de la semana (0,domingo---1,lunes,2-martes). Ahora tu vas a tener una tabla donde vas a almacenar el id del niño con el numero del dia de la semana que tiene contratado. Registrar el id del niño con un solo id de dia en cada dia, es decir si yo soy el alumno 45 y yo contrato los dias 1,4,5, entonces tendrias tres filas:
45,1
45,4
45,5.

Entonces en el dia a dia, tu haces un query que te muetre los niños que deben alimentarce en el dia martes, jueves,viernes,etc.

los niños que no estan registrados, se les vende sugeto a disponibilidad de platos reservados para los que si estan registrados, y todas las ventas de los niños tengan o no su registro, se registran en otro lado.

Asi, de la forma que tu dices de dia tras dia, registrar informacion de los niños registrados no vale la pena, puesto que son muchos niños, contra muchos dias, el decir por ejemplo 60 niños los lunes, pero el año escolar tiene en colombia aproxidamente 40 lunes, serian 40*60=2400 registros, mientras que de mi formas obtendrias solo 60 registros, los resultados de busqueda son mas rapidos. y sumale a esto el algoritmo que tienes que hacer, cuando los dias son festivos, y la misma multiplicacion para todos los alumnos todos los dias.
  #4 (permalink)  
Antiguo 08/03/2009, 19:08
 
Fecha de Ingreso: octubre-2008
Mensajes: 112
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Como puedo llegar a realizar lo siguiente

calro pero eso solo me guardaria los dias de una semana, y nunca podria tener el registro de los que me contratan por ejemplo 3 semanas seguidas, y no podria tener un registro de los dias de un mes completo, hay qeu tener en cuenta que tiene que figurar tambien los dias qeu estan pagados y los que no, entonces necesitaria saber cuantos dias de los contratados no estan pagados, y cuantos si. de tu manera solo podria llevar estas cuentas semana por semana, y cuando adeuden tendria que manualmente asentarlos en otra tabla de deudores.

Bueno estos son algunos inconvenientes... espero seguir recibiendo sugerencias

Sobre tiempos de busqueda no me preocupo demasiado, yo le arme la pc a mi amigo y es bastante poderosa, y como va a etar en localhost, no creo que los tiempos de consulta sean tan elevados..

AGRADEZCO MUCHISIMO SU AYUDA.

Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:56.