SoloCodigo

Programación Web y Scripting => PHP => Mensaje iniciado por: Bicholey en Viernes 23 de Febrero de 2007, 01:55

Título: Validar Fecha Y Hora
Publicado por: Bicholey en Viernes 23 de Febrero de 2007, 01:55
:D  :D  :D  :D

Hola amigos del foro estoy haciendo un formulario y con fecha y la hora y lo estoy haciendo asi:
 

  Fecha:<input type="date" name="fecha" /><br>
  Hora: <input type="time" name="hora"/><br>


Para despues pasarlas mediante una variable y con la ayuda de php a una base de datos mysql .


pero como podran ver en fecha y hora me pueden ingresar cualquier cosa, mi pregunta es como le puedo hacer para que el usuario solo me pueda ingresar un formato de fecha y hora validos es decir algo asi como 01/01/2007 y en la hora 13:30...

Por su atencion gracias.
Título: Re: Validar Fecha Y Hora
Publicado por: ArKaNtOs en Viernes 23 de Febrero de 2007, 04:51
porque no te bajas algun script para calendarios en javascript????

lo siento gato te contesto rapido porque ando que me voa a dormir porque mañana temprano al job

aqui creas uno con un wizard ;)

nos vermox minino
Título: Re: Validar Fecha Y Hora
Publicado por: F_Tanori en Viernes 23 de Febrero de 2007, 07:19
Yo le hago asi...

[dohtml]
<strong>Fecha:  </strong><select name='dia' >
<option value=01  >1</option>
<option value=02  >2</option>
<option value=03  >3</option>
<option value=04  >4</option>
<option value=05  >5</option>
<option value=06  >6</option>
<option value=07  >7</option>
<option value=08  >8</option>
<option value=09  >9</option>
<option value=10  >10</option>
<option value=11  >11</option>
<option value=12  >12</option>
<option value=13  >13</option>
<option value=14  >14</option>
<option value=15  >15</option>
<option value=16  >16</option>
<option value=17  >17</option>
<option value=18  >18</option>
<option value=19  >19</option>
<option value=20  >20</option>
<option value=21  >21</option>
<option value=22  selected>22</option>
<option value=23  >23</option>
<option value=24  >24</option>
<option value=25  >25</option>
<option value=26  >26</option>
<option value=27  >27</option>
<option value=28  >28</option>
<option value=29  >29</option>
<option value=30  >30</option>
<option value=31  >31</option>
</select><select name='mes' >
<option value=01  >Enero</option>
<option value=02  selected>Febrero</option>
<option value=03  >Marzo</option>
<option value=04  >Abril</option>
<option value=05  >Mayo</option>
<option value=06  >Junio</option>
<option value=07  >Julio</option>
<option value=08  >Agosto</option>
<option value=09  >Septiembre</option>
<option value=10  >Octubre</option>
<option value=11  >Noviembre</option>
<option value=12  >Diciembre</option>
</select><select name='fecha_ini_anio' >
<option value=2007 selected>2007</option>
<option value=2008 >2008</option>
<option value=2009 >2009</option>
<option value=2010 >2010</option>
<option value=2011 >2011</option>
<option value=2012 >2012</option>
<option value=2013 >2013</option>
<option value=2014 >2014</option>
<option value=2015 >2015</option>
<option value=2016 >2016</option>
<option value=2017 >2017</option>
<option value=2018 >2018</option>
<option value=2019 >2019</option>
<option value=2020 >2020</option>
</select>
[/dohtml]



Código: Text
  1. &#60;select name='dia' &#62;
  2. &#60;option value=01  &#62;1&#60;/option&#62;
  3. &#60;option value=02  &#62;2&#60;/option&#62;
  4. &#60;option value=03  &#62;3&#60;/option&#62;
  5. &#60;option value=04  &#62;4&#60;/option&#62;
  6. &#60;option value=05  &#62;5&#60;/option&#62;
  7. &#60;option value=06  &#62;6&#60;/option&#62;
  8. &#60;option value=07  &#62;7&#60;/option&#62;
  9. &#60;option value=08  &#62;8&#60;/option&#62;
  10. &#60;option value=09  &#62;9&#60;/option&#62;
  11. &#60;option value=10  &#62;10&#60;/option&#62;
  12. &#60;option value=11  &#62;11&#60;/option&#62;
  13. &#60;option value=12  &#62;12&#60;/option&#62;
  14. &#60;option value=13  &#62;13&#60;/option&#62;
  15. &#60;option value=14  &#62;14&#60;/option&#62;
  16. &#60;option value=15  &#62;15&#60;/option&#62;
  17. &#60;option value=16  &#62;16&#60;/option&#62;
  18. &#60;option value=17  &#62;17&#60;/option&#62;
  19. &#60;option value=18  &#62;18&#60;/option&#62;
  20. &#60;option value=19  &#62;19&#60;/option&#62;
  21. &#60;option value=20  &#62;20&#60;/option&#62;
  22. &#60;option value=21  &#62;21&#60;/option&#62;
  23. &#60;option value=22  selected&#62;22&#60;/option&#62;
  24. &#60;option value=23  &#62;23&#60;/option&#62;
  25. &#60;option value=24  &#62;24&#60;/option&#62;
  26. &#60;option value=25  &#62;25&#60;/option&#62;
  27. &#60;option value=26  &#62;26&#60;/option&#62;
  28. &#60;option value=27  &#62;27&#60;/option&#62;
  29. &#60;option value=28  &#62;28&#60;/option&#62;
  30. &#60;option value=29  &#62;29&#60;/option&#62;
  31. &#60;option value=30  &#62;30&#60;/option&#62;
  32. &#60;option value=31  &#62;31&#60;/option&#62;
  33. &#60;/select&#62;
  34. &#60;/select&#62;&#60;select name='mes' &#62;
  35. &#60;option value=01  &#62;Enero&#60;/option&#62;
  36. &#60;option value=02  selected&#62;Febrero&#60;/option&#62;
  37. &#60;option value=03  &#62;Marzo&#60;/option&#62;
  38. &#60;option value=04  &#62;Abril&#60;/option&#62;
  39. &#60;option value=05  &#62;Mayo&#60;/option&#62;
  40. &#60;option value=06  &#62;Junio&#60;/option&#62;
  41. &#60;option value=07  &#62;Julio&#60;/option&#62;
  42. &#60;option value=08  &#62;Agosto&#60;/option&#62;
  43. &#60;option value=09  &#62;Septiembre&#60;/option&#62;
  44. &#60;option value=10  &#62;Octubre&#60;/option&#62;
  45. &#60;option value=11  &#62;Noviembre&#60;/option&#62;
  46. &#60;option value=12  &#62;Diciembre&#60;/option&#62;
  47. &#60;/select&#62;&#60;select name='anio' &#62;
  48. &#60;option value=2007 selected&#62;2007&#60;/option&#62;
  49. &#60;option value=2008 &#62;2008&#60;/option&#62;
  50. &#60;option value=2009 &#62;2009&#60;/option&#62;
  51. &#60;option value=2010 &#62;2010&#60;/option&#62;
  52. &#60;option value=2011 &#62;2011&#60;/option&#62;
  53. &#60;option value=2012 &#62;2012&#60;/option&#62;
  54. &#60;option value=2013 &#62;2013&#60;/option&#62;
  55. &#60;option value=2014 &#62;2014&#60;/option&#62;
  56. &#60;option value=2015 &#62;2015&#60;/option&#62;
  57. &#60;option value=2016 &#62;2016&#60;/option&#62;
  58. &#60;option value=2017 &#62;2017&#60;/option&#62;
  59. &#60;option value=2018 &#62;2018&#60;/option&#62;
  60. &#60;option value=2019 &#62;2019&#60;/option&#62;
  61. &#60;option value=2020 &#62;2020&#60;/option&#62;
  62. &#60;/select&#62;
  63.  
  64.  
  65.  

y validas con javascript al enviar el formulario que la fecha sea valida

saludos
Título: Re: Validar Fecha Y Hora
Publicado por: Bicholey en Viernes 23 de Febrero de 2007, 19:57
Cita de: "F_Tanori"
Yo le hago asi...

[dohtml]


y validas con javascript al enviar el formulario que la fecha sea valida

saludos
 :P  :P  :P


mm entonces al pasar el valor a php con: $_POST['dia']; me pasaria el valor del dìa 1,2,3,etc,etc y asì sucesivamente ????
Título: Re: Validar Fecha Y Hora
Publicado por: Bicholey en Martes 27 de Febrero de 2007, 21:01
Cita de: "Bicholey"
Cita de: "F_Tanori"
Yo le hago asi...

[dohtml]


y validas con javascript al enviar el formulario que la fecha sea valida

saludos
:P  :P  :P


mm entonces al pasar el valor a php con: $_POST['dia']; me pasaria el valor del dìa 1,2,3,etc,etc y asì sucesivamente ????
:D  :D  :D

mmm eso me funciona si el dato es uno solo pero en este caso son tres datos año, mes y dìa y ala hora pasarlo al php con el formato YYYY-MM-DD como los paso porque intento concatenar los tres datos pero me los rechaza estoy intentado algo asi :  $fecha=$_POST['year.mes.dia']; pero me da error, entonces como le haria ???

Bueno eso utlizando el codigo de F_Tanori
Título: Re: Validar Fecha Y Hora
Publicado por: Mollense en Martes 27 de Febrero de 2007, 23:54
Cita de: "Bicholey"
estoy intentado algo asi :  $fecha=$_POST['year.mes.dia']; pero me da error, entonces como le haria ???
 :blink:
Código: Text
  1.  
  2. &#036;fecha=&#036;_POST['anio'].&#34;/&#34;.&#036;_POST['mes'].&#34;/&#34;.&#036;_POST['dia'];
  3.  
  4.  
:hola:
Título: Re: Validar Fecha Y Hora
Publicado por: Bicholey en Miércoles 28 de Febrero de 2007, 01:13
:lol:  :lol:  :lol:


Excelente muchas gracias ya me habia atorado mucho con eso ...
Título: Re: Validar Fecha Y Hora
Publicado por: bob esponja en Miércoles 28 de Febrero de 2007, 03:51
recomiendo expresiones regulares
recomiendo validar del lado del server :D

http://weblogtoolscollection.com/regex/regex.php (http://weblogtoolscollection.com/regex/regex.php)
http://www.regular-expressions.info/dates.html (http://www.regular-expressions.info/dates.html)

etc
Título: Re: Validar Fecha Y Hora
Publicado por: Bicholey en Miércoles 28 de Febrero de 2007, 04:03
Cita de: "bob esponja"
recomiendo expresiones regulares
recomiendo validar del lado del server :D

http://weblogtoolscollection.com/regex/regex.php (http://weblogtoolscollection.com/regex/regex.php)
http://www.regular-expressions.info/dates.html (http://www.regular-expressions.info/dates.html)

etc
 :D  :D  :D


o sea que estoy validando del lado del cliente ????

y porque crees que es mejor validar del lado del server ????
Título: Re: Validar Fecha Y Hora
Publicado por: Mollense en Miércoles 28 de Febrero de 2007, 04:36
Eso ya se ha discutido en alguna ocasión en el foro. Si encuentro el hilo lo posteo-
Título: Re: Validar Fecha Y Hora
Publicado por: Bicholey en Jueves 1 de Marzo de 2007, 01:25
<_<  <_<  <_<  <_<


mmm que mal ahora que ya termine de hacer todo me doy cuenta del pequeño error que tiene ese menu desplegable, y es que de ese modo cualquiera podria poner una fecha de 31 de febrero de cualquier año aunque este sea bisiesto*

* Espero no equivocarme en la ortografia de dicha palabra.
Título: Re: Validar Fecha Y Hora
Publicado por: Mollense en Jueves 1 de Marzo de 2007, 02:16
Cita de: "F_Tanori"
Yo le hago asi...

y validas con javascript al enviar el formulario que la fecha sea valida
Citar
mmm que mal ahora que ya termine de hacer todo me doy cuenta del pequeño error que tiene ese menu desplegable, y es que de ese modo cualquiera podria poner una fecha de 31 de febrero de cualquier año aunque este sea bisiesto

Claro, no importa si el año es o no bisiesto, siempre está la posibilidad de ingresar una fecha incorrecta. Por eso lo dicho por F_Tanori
Título: Re: Validar Fecha Y Hora
Publicado por: Bicholey en Jueves 1 de Marzo de 2007, 02:49
:D  :D  :D  :D

Bueno esta claro que por error humano se pueda ingresar una fecha no valida pero que se accese una fecha inexistente como que no me gustaria , por otro lado como le haces para hacer la validacion con javascript ????
Título: Re: Validar Fecha Y Hora
Publicado por: Mollense en Jueves 1 de Marzo de 2007, 05:05
Cita de: "Bicholey"
:D  :D  :D  :D

Bueno esta claro que por error humano se pueda ingresar una fecha no valida pero que se accese una fecha inexistente como que no me gustaria , por otro lado como le haces para hacer la validacion con javascript ????
Acá está:

Código: Text
  1. &#60;html&#62;
  2.   &#60;head&#62;
  3.     &#60;meta http-equiv=&#34;Content-Type&#34; content=&#34;text/html; charset=windows-1252&#34;&#62;
  4.     &#60;title&#62;&#60;/title&#62;
  5.       &#60;script language=&#34;JavaScript&#34; type=&#34;text/javascript&#34;&#62;
  6.       function validar(){  
  7.         var bisiesto=0;    //Tenés que calcularlo (ES FÁCIL)
  8.         var fechaValida=1;
  9.        
  10.         if(document.frmFecha.mes.value==&#34;04&#34; || document.frmFecha.mes.value==&#34;06&#34; || document.frmFecha.mes.value==&#34;09&#34; || document.frmFecha.mes.value==&#34;11&#34;){
  11.           if(document.frmFecha.dia.value&#62;&#34;30&#34;) fechaValida=0;
  12.         }
  13.        
  14.         if(document.frmFecha.mes.value==&#34;02&#34;){
  15.           if(bisiesto){
  16.             if(document.frmFecha.dia.value&#62;&#34;29&#34;) fechaValida=0;
  17.           }
  18.           else{
  19.             if(document.frmFecha.dia.value&#62;&#34;28&#34;) fechaValida=0;
  20.           }
  21.          }
  22.          if(!fechaValida){
  23.           alert(&#34;La fecha ingresada no es válida&#34;);
  24.           return false
  25.         }
  26.         return true
  27.       }
  28.     &#60;/script&#62;
  29.   &#60;/head&#62;
  30.   &#60;body&#62;
  31.     &#60;form name=&#34;frmFecha&#34; action=&#34;tuPagina.php&#34; method=&#34;post&#34; onsubmit=&#34;return validar()&#34;&#62;    
  32.       &#60;select name=&#34;dia&#34; &#62;
  33.         &#60;option value=01  &#62;1&#60;/option&#62;
  34.         &#60;option value=02  &#62;2&#60;/option&#62;
  35.         &#60;option value=03  &#62;3&#60;/option&#62;
  36.         &#60;option value=04  &#62;4&#60;/option&#62;
  37.         &#60;option value=05  &#62;5&#60;/option&#62;
  38.         &#60;option value=06  &#62;6&#60;/option&#62;
  39.         &#60;option value=07  &#62;7&#60;/option&#62;
  40.         &#60;option value=08  &#62;8&#60;/option&#62;
  41.         &#60;option value=09  &#62;9&#60;/option&#62;
  42.         &#60;option value=10  &#62;10&#60;/option&#62;
  43.         &#60;option value=11  &#62;11&#60;/option&#62;
  44.         &#60;option value=12  &#62;12&#60;/option&#62;
  45.         &#60;option value=13  &#62;13&#60;/option&#62;
  46.         &#60;option value=14  &#62;14&#60;/option&#62;
  47.         &#60;option value=15  &#62;15&#60;/option&#62;
  48.         &#60;option value=16  &#62;16&#60;/option&#62;
  49.         &#60;option value=17  &#62;17&#60;/option&#62;
  50.         &#60;option value=18  &#62;18&#60;/option&#62;
  51.         &#60;option value=19  &#62;19&#60;/option&#62;
  52.         &#60;option value=20  &#62;20&#60;/option&#62;
  53.         &#60;option value=21  &#62;21&#60;/option&#62;
  54.         &#60;option value=22  &#62;22&#60;/option&#62;
  55.         &#60;option value=23  &#62;23&#60;/option&#62;
  56.         &#60;option value=24  &#62;24&#60;/option&#62;
  57.         &#60;option value=25  &#62;25&#60;/option&#62;
  58.         &#60;option value=26  &#62;26&#60;/option&#62;
  59.         &#60;option value=27  &#62;27&#60;/option&#62;
  60.         &#60;option value=28  &#62;28&#60;/option&#62;
  61.         &#60;option value=29  &#62;29&#60;/option&#62;
  62.         &#60;option value=30  &#62;30&#60;/option&#62;
  63.         &#60;option value=31  &#62;31&#60;/option&#62;
  64.       &#60;/select&#62;
  65.       &#60;select name=&#34;mes&#34; &#62;
  66.         &#60;option value=01  &#62;Enero&#60;/option&#62;
  67.         &#60;option value=02  selected&#62;Febrero&#60;/option&#62;
  68.         &#60;option value=03  &#62;Marzo&#60;/option&#62;
  69.         &#60;option value=04  &#62;Abril&#60;/option&#62;
  70.         &#60;option value=05  &#62;Mayo&#60;/option&#62;
  71.         &#60;option value=06  &#62;Junio&#60;/option&#62;
  72.         &#60;option value=07  &#62;Julio&#60;/option&#62;
  73.         &#60;option value=08  &#62;Agosto&#60;/option&#62;
  74.         &#60;option value=09  &#62;Septiembre&#60;/option&#62;
  75.         &#60;option value=10  &#62;Octubre&#60;/option&#62;
  76.         &#60;option value=11  &#62;Noviembre&#60;/option&#62;
  77.         &#60;option value=12  &#62;Diciembre&#60;/option&#62;
  78.       &#60;/select&#62;
  79.       &#60;select name=&#34;anio&#34; &#62;
  80.         &#60;option value=2007 selected&#62;2007&#60;/option&#62;
  81.         &#60;option value=2008 &#62;2008&#60;/option&#62;
  82.         &#60;option value=2009 &#62;2009&#60;/option&#62;
  83.         &#60;option value=2010 &#62;2010&#60;/option&#62;
  84.         &#60;option value=2011 &#62;2011&#60;/option&#62;
  85.         &#60;option value=2012 &#62;2012&#60;/option&#62;
  86.         &#60;option value=2013 &#62;2013&#60;/option&#62;
  87.         &#60;option value=2014 &#62;2014&#60;/option&#62;
  88.         &#60;option value=2015 &#62;2015&#60;/option&#62;
  89.         &#60;option value=2016 &#62;2016&#60;/option&#62;
  90.         &#60;option value=2017 &#62;2017&#60;/option&#62;
  91.         &#60;option value=2018 &#62;2018&#60;/option&#62;
  92.         &#60;option value=2019 &#62;2019&#60;/option&#62;
  93.         &#60;option value=2020 &#62;2020&#60;/option&#62;
  94.       &#60;/select&#62;
  95.       &#60;br&#62;
  96.       &#60;input type=&#34;submit&#34; value=&#34;Aceptar&#34; /&#62;
  97.     &#60;/form&#62;
  98.   &#60;/body&#62;
  99. &#60;/html&#62;
  100.  
Lo único que te falta es calcular si el año es o no bisiesto (Por ahora se presupone que no mediante var bisiesto=0;).-

Saludos  :guitar:
Título: Re: Validar Fecha Y Hora
Publicado por: bob esponja en Jueves 1 de Marzo de 2007, 16:41
Citar
You have to do server-side validation in addition to client-side validation anyway since client-side validation can always be bypassed.
Título: Re: Validar Fecha Y Hora
Publicado por: Bicholey en Jueves 1 de Marzo de 2007, 16:46
:D  :D  :D

Gracias por la ayuda
Título: Re: Validar Fecha Y Hora
Publicado por: Mollense en Jueves 1 de Marzo de 2007, 17:12
Cita de: "bob esponja"
Citar
You have to do server-side validation in addition to client-side validation anyway since client-side validation can always be bypassed.
Claro, la validación del lado del cliente solo es para evitar recargar la página de forma innecesaria. La validación, a mi modo de ver, debería hacerse en ambos lados.-

 :beer:
Cita de: ""Bicholey""
Gracias por la ayuda
Por nadasss :ball:
Título: Re: Validar Fecha Y Hora
Publicado por: F_Tanori en Viernes 2 de Marzo de 2007, 17:14
Para validar yo lo hago de esta manera y hasta el momento me ha funcionado  :kicking:

el formato debe de ser dd/mm/yyyy si alguien quiere modificar la funcion para que admita mas formatos, adelante y que la suba de nuevo, o si le encuentrar algun error, y publique el 'fix'  :smartass:



Código: Text
  1. function FechaValida(fecha)
  2.   {
  3.    
  4.     var dia,mes,anio
  5.    
  6.     dia=fecha.substr(0,2);
  7.     mes=fecha.substr(3,2);
  8.     anio=fecha.substr(6,4);
  9.    
  10.     var lfecha=new Date(anio,mes - 1,dia);
  11.     if (mes==lfecha.getMonth()+1)
  12.        {
  13.       if (anio==lfecha.getFullYear())  
  14.         {
  15.            if (dia==lfecha.getDate())      
  16.              {
  17.                return true;
  18.              }
  19.         }
  20.        }
  21.     return false;
  22.    
  23.   }
  24.  

y valido con una funcion en el evento onSubmit del fromulario

Claro esta bien validar de los dos lado, pero siempre hay que validar de lado del cliente para evitar hacer trabajar al server, con informacion inecesaria mejor evitas que sea enviada hasta que sea valida




Saludos
Título: Re: Validar Fecha Y Hora
Publicado por: Bicholey en Sábado 3 de Marzo de 2007, 04:54
Cita de: "F_Tanori"
Para validar yo lo hago de esta manera y hasta el momento me ha funcionado  :kicking:

el formato debe de ser dd/mm/yyyy si alguien quiere modificar la funcion para que admita mas formatos, adelante y que la suba de nuevo, o si le encuentrar algun error, y publique el 'fix'  :smartass:



Código: Text
  1. function FechaValida(fecha)
  2.   {
  3.     
  4.     var dia,mes,anio
  5.     
  6.     dia=fecha.substr(0,2);
  7.     mes=fecha.substr(3,2);
  8.     anio=fecha.substr(6,4);
  9.     
  10.     var lfecha=new Date(anio,mes - 1,dia);
  11.     if (mes==lfecha.getMonth()+1)
  12.        {
  13.       if (anio==lfecha.getFullYear())  
  14.         {
  15.            if (dia==lfecha.getDate())       
  16.              {
  17.                return true;
  18.              }
  19.         }
  20.        }
  21.     return false;
  22.     
  23.   }
  24.  

y valido con una funcion en el evento onSubmit del fromulario

Claro esta bien validar de los dos lado, pero siempre hay que validar de lado del cliente para evitar hacer trabajar al server, con informacion inecesaria mejor evitas que sea enviada hasta que sea valida




Saludos
 :D  :D  :D  :D  :D


Lo malo es que estoy utilizando el Easyphp , si lo habeis utilizado os habeis dado cuenta que cuando haces los campos y le das el tipo de dato que se va a ingresar le doy date pero el formato que trae es YYYY/MM/DD, alguno de uds sabe si puedo modificar eso ?????