Foros del Web » Programando para Internet » PHP »

problema con validacion de horios php

Estas en el tema de problema con validacion de horios php en el foro de PHP en Foros del Web. Pues solo escribo para ver si podrian ayudarme con esta validacion se trata de ingresar un curso pero debe validar los horarios que no topen ...
  #1 (permalink)  
Antiguo 01/06/2011, 14:39
 
Fecha de Ingreso: marzo-2011
Ubicación: Victoria,Mexico
Mensajes: 45
Antigüedad: 13 años, 1 mes
Puntos: 0
problema con validacion de horios php

Pues solo escribo para ver si podrian ayudarme con esta validacion se trata de ingresar un curso pero debe validar los horarios que no topen con los que ya estan en la tabla, funciona si metes datos como digamos Sql,8,10 segudo metes sql,9,10 ahi si funciona pero si metemos algo diferente antes y luego metes el segundo que puse como quiera lo ingresa.

Alguien me dio la idea mediante campos unicos en la BD pero no encontre la manera para poder tomar el error de la tabla y mostrarlo en php



Código PHP:
Ver original
  1. <?php
  2. // RECIBIMOS DEL FORMULARIO...................
  3. $materia=$_POST['materia'];
  4. $hora1= $_POST['hora1'];
  5. $hora2=$_POST['hora2'];
  6. $instructor=$_POST['instructor'];
  7.  
  8.  
  9. // CONECTAMOS
  10. mysql_connect("localhost", "root", "root");
  11. mysql_select_db("prueba");
  12.  
  13. //HACEMOS LA BUSQUEDA HABER SI EXISTE YA  EL USARIO
  14. $busqueda=mysql_query("SELECT * From tabla2 WHERE  hora1='$hora1' or hora2 = '$hora2'  or  (hora1 <  '$hora1' and '$hora1' <  hora2) or (hora1 <  '$hora2' and '$hora2' <  hora2) or '$hora1' = '$hora2'");
  15.  
  16.  
  17. //SI EXISTE EL USUARIO DA LA ALERTA
  18. if(mysql_num_rows($busqueda)==1){
  19.    
  20.  echo "El nombre de usuario no se encuentra disponible. Por favor intente con otro.<br>";
  21.  
  22. }
  23.  
  24. else{
  25.      mysql_query("INSERT INTO tabla2(hora1,hora2,materia,instructor) VALUES ('$hora1', '$hora2','$materia','$instructor')");
  26.      echo "$user ha sido registrado.";
  27.     echo "<a href=\"javascript:history.back()\">Regresar</a>";
  28. }
  29.  
  30.  
  31.  
  32. ?>
  #2 (permalink)  
Antiguo 01/06/2011, 14:45
Avatar de gysato  
Fecha de Ingreso: junio-2010
Ubicación: Tuxtla Gtz, Chiapas
Mensajes: 88
Antigüedad: 13 años, 10 meses
Puntos: 9
Respuesta: problema con validacion de horios php

Que es lo que quieres hacer con tu consulta? algoritmicamente que es lo que buscas?
  #3 (permalink)  
Antiguo 01/06/2011, 15:25
 
Fecha de Ingreso: marzo-2011
Ubicación: Victoria,Mexico
Mensajes: 45
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: problema con validacion de horios php

busco que las horas no se empalmen osea que si hay un curso de 8 a 10 e ingresas despues otro de 9 a 10 no te deje meter el dato o si ingresas otro de 8 a 10 no te deje (por que pues no puede haber dos cursos a la misma hora )
  #4 (permalink)  
Antiguo 01/06/2011, 15:49
Avatar de gysato  
Fecha de Ingreso: junio-2010
Ubicación: Tuxtla Gtz, Chiapas
Mensajes: 88
Antigüedad: 13 años, 10 meses
Puntos: 9
Respuesta: problema con validacion de horios php

Pues a mi se me ocurriria antes de hacer un algoritmo muy conplejo, crear un catalogo de horas y manejarlos con un ID para que se pueda verificar con eso, es decir si ya existe un ID de horario en la tabla ya no permitir ingresar el nuevo registro.

ID -- Horario
1 7-8
2 8-9
.....

Saludos

Porque con lo que tienes jamas lograras eso. Tendrias que recorrer registro por registro con unos if para checar la hora de inicio y fin, etc.
  #5 (permalink)  
Antiguo 01/06/2011, 15:57
 
Fecha de Ingreso: mayo-2011
Ubicación: Cancun
Mensajes: 9
Antigüedad: 12 años, 10 meses
Puntos: 1
Respuesta: problema con validacion de horios php

concuerdo con gysato, creo que debes replantear tu logica y materializarlo en algo mas practico y sencillo.
  #6 (permalink)  
Antiguo 01/06/2011, 16:19
Avatar de Potro  
Fecha de Ingreso: abril-2001
Mensajes: 2.249
Antigüedad: 23 años
Puntos: 39
Respuesta: problema con validacion de horios php

Bueno aqui la cosa es validat una fecha completa supongo ya que puedo tener dos cursos de 8 a 10 am pero 1 el 1 de junio y el otro el 2 de junio..

no solo validar horas..

Bueno esto yo una ves lo hice y se me ocurrio algo muy facil, maneje las horas como horas militares..

ejemplo

las 13:30 horas obvio en hora militar seria las 1330 solo se quitan lo : bueno con esto yo puedo hacer rapida mente mis validaciones ejemplo

si tengo un curso el 1/06/2011 14:00 a 16:00 ***** que es lo que hago primero valido si ya hay cursos en ese dia::


Código SQL:
Ver original
  1. SELECT COUNT(*) AS Total FROM tbl_trabajorealizado
  2. WHERE YEAR(dt_FechaTrabajo) = "2010" AND MONTH(dt_FechaTrabajo) = "07" AND DAY(dt_FechaTrabajo) = "31"

Si el resultado es 0 pues no hago mas validaciones pongo el curso a la hora seleccionada ya que todo el dia esta vacio..


Bueno que pasa si me sale 1 o mas..

Ahi empiezo a obtener la hora de inicio como hora fin de cada registro de ese dia y empiezo a validar..


Yo hago lo siguiente:::


obtengo mis resultados y hago validaciones

Código PHP:
Ver original
  1. //horas del curso que quieren ingresar
  2. $Hi = $_GET['HI'];
  3. $Hf = $_GET['HF'];
  4.  
  5. //recorset de mis registros del dia
  6. while($row = mysql_fetch_array($SQL)){
  7.            
  8.                                 //Obtengo la hora ini y hora fin de cada registro    
  9.                 $HoraIni = $row['HI'];
  10.                 $HoraFin = $row['HF']; 
  11.                
  12.                                 ///Comparo
  13.                 if($Hi < $HoraIni && $Hf <= $HoraIni){
  14.                     //Si cumple no sumo nada
  15.                                          $coincide = $coincide+0;
  16.                 }elseif($Hi >= $HoraFin && $Hf > $HoraFin){
  17.                     //Si cumple no sumo nada
  18.                     $coincide = $coincide+0;
  19.                 }else{
  20.                                         //Si no cumple alguna de las dos anteriores entonces sumo 1 a las coincidencias
  21.                     $coincide = $coincide+1;
  22.                 }
  23.            
  24.             }



Al ultimo comparo la variable $coincide si es 0 entonces puede entrar el nuevo registro si es 1 o mayor obvio no entra y muestro mensaje de duplicidad de horario..



saludos..
__________________
Paginación en FLASH,

http://www.forosdelweb.com/f62/pagin...o-aqui-540241/
  #7 (permalink)  
Antiguo 01/06/2011, 16:25
Avatar de gysato  
Fecha de Ingreso: junio-2010
Ubicación: Tuxtla Gtz, Chiapas
Mensajes: 88
Antigüedad: 13 años, 10 meses
Puntos: 9
Respuesta: problema con validacion de horios php

Cita:
Iniciado por Potro Ver Mensaje
Bueno aqui la cosa es validat una fecha completa supongo ya que puedo tener dos cursos de 8 a 10 am pero 1 el 1 de junio y el otro el 2 de junio..

no solo validar horas..

Bueno esto yo una ves lo hice y se me ocurrio algo muy facil, maneje las horas como horas militares..

ejemplo

las 13:30 horas obvio en hora militar seria las 1330 solo se quitan lo : bueno con esto yo puedo hacer rapida mente mis validaciones ejemplo

si tengo un curso el 1/06/2011 14:00 a 16:00 ***** que es lo que hago primero valido si ya hay cursos en ese dia::


Código SQL:
Ver original
  1. SELECT COUNT(*) AS Total FROM tbl_trabajorealizado
  2. WHERE YEAR(dt_FechaTrabajo) = "2010" AND MONTH(dt_FechaTrabajo) = "07" AND DAY(dt_FechaTrabajo) = "31"

Si el resultado es 0 pues no hago mas validaciones pongo el curso a la hora seleccionada ya que todo el dia esta vacio..


Bueno que pasa si me sale 1 o mas..

Ahi empiezo a obtener la hora de inicio como hora fin de cada registro de ese dia y empiezo a validar..


Yo hago lo siguiente:::


obtengo mis resultados y hago validaciones

Código PHP:
Ver original
  1. //horas del curso que quieren ingresar
  2. $Hi = $_GET['HI'];
  3. $Hf = $_GET['HF'];
  4.  
  5. //recorset de mis registros del dia
  6. while($row = mysql_fetch_array($SQL)){
  7.            
  8.                                 //Obtengo la hora ini y hora fin de cada registro    
  9.                 $HoraIni = $row['HI'];
  10.                 $HoraFin = $row['HF']; 
  11.                
  12.                                 ///Comparo
  13.                 if($Hi < $HoraIni && $Hf <= $HoraIni){
  14.                     //Si cumple no sumo nada
  15.                                          $coincide = $coincide+0;
  16.                 }elseif($Hi >= $HoraFin && $Hf > $HoraFin){
  17.                     //Si cumple no sumo nada
  18.                     $coincide = $coincide+0;
  19.                 }else{
  20.                                         //Si no cumple alguna de las dos anteriores entonces sumo 1 a las coincidencias
  21.                     $coincide = $coincide+1;
  22.                 }
  23.            
  24.             }



Al ultimo comparo la variable $coincide si es 0 entonces puede entrar el nuevo registro si es 1 o mayor obvio no entra y muestro mensaje de duplicidad de horario..



saludos..

Efectivo Potro pero a eso me referia con mas complejo jeje... Claro que lo de la fecha estara comprobándose a la hora de checar si existe ya el ID del horario en otro simple AND.

Saludos

Etiquetas: horarios, materias, valiciones
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 17:34.