Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

ayuda con consulta, por favor

Estas en el tema de ayuda con consulta, por favor en el foro de Mysql en Foros del Web. Buenas estoy haciendo una aplicacion para gestionar los recursos de mi universidad y tengo una duda al comprobar un dato. Tengo una parte de recursos, ...
  #1 (permalink)  
Antiguo 14/12/2007, 09:40
 
Fecha de Ingreso: diciembre-2007
Mensajes: 8
Antigüedad: 16 años, 4 meses
Puntos: 0
ayuda con consulta, por favor

Buenas estoy haciendo una aplicacion para gestionar los recursos de mi universidad y tengo una duda al comprobar un dato. Tengo una parte de recursos, donde realizas la reserva del recurso, eligiendo una familia, un recursos, la fecha de la reserva, la hora del inicio y la hora del fin de la reserva. Ejemplo reserva de la familia recursos: aula, como recurso: aula 10, fecha de reserva: 2007-12-14, hora de inicio: 9:00 y hora de fin:11:00. Bien mi problema es el siguiente kiero ke al hacer la reserva compruebe ke si intenta reservar el mismo recurso en la misma fecha y hora, me diga que no puede y lo consegui de esta forma

$sql="SELECT id_nombre_recursos FROM reserva_recursos WHERE (id_nombre_recursos='$recurso' AND fecha_reserva='$fecha_reserva' AND hora_reserva_ini='$hora_inicio' AND hora_reserva_fin='$hora_fin')";

Mi problema, tras realizar realizar las pruebas con esa subconsulta es ke si elige el mismo dia dia, hora y fin, perfecto, el tema es, si la nueva reserva es de 10:00 a 12:00, pues con la consulta de arriba, me la aceptaria y me daria de alta la reserva, cuando teoricamente estaba ya ocupada de 9:00 a 11:00, pense esta otra consulta, pero no me funciona

$sql="SELECT id_nombre_recursos FROM reserva_recursos WHERE (id_nombre_recursos='$recurso' AND fecha_reserva='$fecha_reserva' AND ( hora_reserva_ini BETWEEN'$hora_inicio' AND '$hora_fin') AND ( hora_reserva_fin BETWEEN '$hora_inicio' AND '$hora_fin'))";

Me podrias ayudar a ver como podria hacer esa comprobacion ?

El dato de la hora es un varchar(5) kizas por eso no funciona con el between y tendria que ser del tipo time ? puede ser ese el fallo?

gracias y un saludo

Última edición por Tio_Rafiki; 14/12/2007 a las 09:52
  #2 (permalink)  
Antiguo 14/12/2007, 22:29
Avatar de cala932  
Fecha de Ingreso: septiembre-2006
Ubicación: San Juan-Argentina
Mensajes: 902
Antigüedad: 17 años, 7 meses
Puntos: 9
Re: ayuda con consulta, por favor

Hola creo que lo deberias comparar es que si es el mismo dia y la hora inicio de la nueva reserva es mayor a la hora fin de la reserva anterior, entonces si le puedes dar de alta. Saludos
__________________
->Aprender es un proceso que incluye el error..
  #3 (permalink)  
Antiguo 15/12/2007, 03:54
 
Fecha de Ingreso: diciembre-2007
Mensajes: 8
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: ayuda con consulta, por favor

bueno despues de andar probando, me funciona con between, el problema es ahora el siguiente, hago una reserva de 9 a 11, si intento hacer una reserva de 10 a 12, o de 9 a 12 por ejemplo, no me deja, dice ke ya esta reservada, pero si lo intento hacer de 11 a 12, no me deja ya que comprueba que esta dentro de ese tango, si pongo las 11:01 ya si me deja...el tema que en el formulario, tengo un desplegable para horas de 9 a 20 y en minutos otros desplegable de min 00 y 30. Asi puedes hacer reservas de 9:00 a 10:30 por ejemplo, luego ya lo concateno en una mariable tipo $horaf=$hora.":".$min. Para que me funcionara el between tuve, que poner el tipo de dato como time en las tablas de mysql. Alguna opcion mas ?
  #4 (permalink)  
Antiguo 16/12/2007, 11:16
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 5 meses
Puntos: 655
Re: ayuda con consulta, por favor

Favor no poner código de programación ni variables de código en BD.

Función de la sección de Base de Datos
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
  #5 (permalink)  
Antiguo 16/12/2007, 15:36
Avatar de pragone  
Fecha de Ingreso: diciembre-2007
Ubicación: Madrid
Mensajes: 223
Antigüedad: 16 años, 4 meses
Puntos: 2
Re: ayuda con consulta, por favor

El problema que tienes se resuelve simplemente considerando que una reserva de 09:00 a 10:00 realmente es una reserva de 09:00 a 09:59:59.
O por el contrario, otra forma que podría ser más sencilla es que simplemente definas bloques horarios, es decir, si lo mínimo que se puede reservar un aula es una hora, puedes hacer 1 la hora entre 09:00 y 10:00, 2 entre 10:00 y 11:00, etc. De esta forma, puedes buscar simplemente por números y te despreocupas de problemas por choque entre límites de reservas. El único problema que esto tiene: si en el futuro quieres ofrecer reservas de menos de una hora... malo, malo, por lo que colocaría de una vez bloques de media hora o 15 minutos.

Espero que te haya sido de ayuda
  #6 (permalink)  
Antiguo 16/12/2007, 16:06
 
Fecha de Ingreso: diciembre-2007
Mensajes: 8
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: ayuda con consulta, por favor

si si se me olvido postear, ke ya lo habia reparado. Lo hice con un if y un case y comprobando los minutos si eran las 10:00 pues ponia 09.59 y lo arregle asi, muchas gracias


un saludo
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 18:26.