Foros del Web » Programando para Internet » PHP »

Como valido fecha

Estas en el tema de Como valido fecha en el foro de PHP en Foros del Web. Alguien sabe como validar fecha ingresada en un input en formato aaaa/mm/dd .... antes de que esta ingrese a una tabla de mi BD en ...
  #1 (permalink)  
Antiguo 05/01/2007, 15:34
Avatar de Superlinux  
Fecha de Ingreso: octubre-2005
Ubicación: Colombia
Mensajes: 662
Antigüedad: 18 años, 6 meses
Puntos: 1
Pregunta Como valido fecha

Alguien sabe como validar fecha ingresada en un input en formato aaaa/mm/dd .... antes de que esta ingrese a una tabla de mi BD en Mysql.

????
__________________
"La vida sigue su curso, tú toma parte de ella."
  #2 (permalink)  
Antiguo 06/01/2007, 03:09
Avatar de holahola  
Fecha de Ingreso: mayo-2005
Ubicación: Móstoles - (Madrid)
Mensajes: 214
Antigüedad: 19 años
Puntos: 1
Re: Como valido fecha

Hola Superlinux.

Se puede hacer de distintas formas. Una de ella podría ser con esta función (se valida si la fecha existe o no, por ejemplo 29/02/2005 no sería válida por no ser año bisiesto; tampoco sería válido 31/13/2006 porque el mes 13 no existe):


Código PHP:
function validarfecha($dia$mes $anio){
    
$fechaok=false;
    
//probamos si la fecha es válida (tiene que ser mes,dia,año)
      
if (checkdate($mes,$dia,$anio))
      {
        
$fechaok=true;
    }
    return 
$fechaok;
}
?> 
También se puede validar con expresiones regulares, el formato y el número de dígitos de cada uno de los componentes de la fecha, por ejemplo:

Código PHP:
    //-se valida fecha con formato aaaa/mm/dd
    
$error='N';

    if ( !
ereg"(^[0-9]{4})/([0-9]{2})/([0-9]{2}$)"$fecha$regs ) ) 
    {
        
$_SESSION['mensaje_error'].="\\n --> ¡Formato fecha incorrecto! (formato aaaa/mm/dd). ";
        
$error='S';
    } 
Dale un vistazo a http://es2.php.net/manual/es/function.ereg.php; y si quieres ahondar más sobre expresiones regulares te dejo este tutorial que me localizó google (yo no me considero para nada un experto en expresiones regulares ) : http://bulma.net/body.phtml?nIdNoticia=770

Quizás lo más correcto sería utilizar las 2 validaciones conjuntamente.

Saludos.

Última edición por holahola; 06/01/2007 a las 13:03 Razón: expresiones regulares
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 07:21.