Foros del Web » Programando para Internet » PHP »

Validacion de fechas

Estas en el tema de Validacion de fechas en el foro de PHP en Foros del Web. Que tal amigos, espero esten bien, necesito me den una mano con la validacion de las fechas de mi sistema, resulta que necesito ingresar la ...
  #1 (permalink)  
Antiguo 10/06/2011, 09:03
Avatar de Bullet  
Fecha de Ingreso: agosto-2005
Ubicación: Margarita, Venezuela
Mensajes: 235
Antigüedad: 18 años, 8 meses
Puntos: 1
Validacion de fechas

Que tal amigos, espero esten bien, necesito me den una mano con la validacion de las fechas de mi sistema, resulta que necesito ingresar la fecha ya sea como un numero entero o como fecha como tal, estoy intentando hacerla de la primera forma, tomando el mes y el dia solamente como numeros enteros, y validando en intervalos que comprenden los dias de cada mes, pero se me presenta un problemita, que cuando entro al segundo ciclo if no me procesa los datos, ya que cuando ingreso la fecha para l segundo mes entra en el primer ciclo, les dejo el codigo que estoy usando para que lo vean:

Código PHP:
<?php
$fecha 
$_POST['fecha'];
if ((
$fecha "0101") OR ($fecha "0131")) {
    print 
"<script>alert('LA Fecha debe estar comprendida entre 0101 y 0131, REgresa a solucionar el problema')</script>" ;
    print 
"<script>document.location='bitacora_diaria_palan.php'</script>";
    exit;
}
if ((
$fecha "0201") OR ($fecha "0229")) {
    print 
"<script>alert('LA Fecha debe estar comprendida entre 0201 y 0229, REgresa a solucionar el problema')</script>" ;
    print 
"<script>document.location='bitacora_diaria_palan.php'</script>";
    exit;
}

?>
La otra forma seria ingresando la fecha en su formato, año/mes/dia, la funcion la tngo, pero quisiera que cuando ingrrese los 2 primeros numeros se me coloque automaticamente el slash (/), para no tener que escribirlo, por lo demas la funcion que uso funciona bien, pero me faltaria eso, quisiera alguna sugerencia, o una ayudita, ya que de ahi no e podido pasar. Saludos!!
  #2 (permalink)  
Antiguo 10/06/2011, 09:16
 
Fecha de Ingreso: abril-2009
Mensajes: 83
Antigüedad: 15 años
Puntos: 2
Respuesta: Validacion de fechas

tu codigo esta bien, lo que no se es como llega $_POST['fecha'] que valor trae....
si $_POST['fecha'] trae los / tendrias que hacer un replace para quitarlos str_replace("/","",$_POST[fecha])

$fecha = "0130";
echo (($fecha < "0101") OR ($fecha > "0131"));
if (($fecha < "0101") OR ($fecha > "0131")) {
print "<script>alert('LA Fecha debe estar comprendida entre 0101 y 0131, REgresa a solucionar el problema')</script>" ;
/*print "<script>document.location='bitacora_diaria_palan. php'</script>"; */
// exit;
}
$fecha = "0230";
if (($fecha < "0201") OR ($fecha > "0229")) {
print "<script>alert('LA Fecha debe estar comprendida entre 0201 y 0229, REgresa a solucionar el problema')</script>" ;
/* print "<script>document.location='bitacora_diaria_palan. php'</script>";
exit; */
}

saludos
  #3 (permalink)  
Antiguo 10/06/2011, 09:25
Avatar de Bullet  
Fecha de Ingreso: agosto-2005
Ubicación: Margarita, Venezuela
Mensajes: 235
Antigüedad: 18 años, 8 meses
Puntos: 1
Respuesta: Validacion de fechas

Que mas amigo, el $_POST['fecha'] trae solo el valor entero que commprende la fecha, por templo "0101", "0102",...,"0131", y ese formato luego debo llevarlo al formato de fecha, ahora lo que quisiera es ingresar el dia y el mes y q de una vez me ponga el "/", no importa q tenga q cambiar el tipo de dato y agregar el año...
  #4 (permalink)  
Antiguo 10/06/2011, 09:40
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años
Puntos: 528
Respuesta: Validacion de fechas

De hecho, tu código no está bien.
No puedes hacer una comparación de este tipo:
if (($fecha < "0101") OR ($fecha > "0131")) {

ya que los ceros a la izquierda hacen que el número sea una cadena, por tanto decir que una cadena es mayor o menor a otra se comparará por orden alfabético.

Lo que te recomendaría hacer es transformar la fecha a un formato más manejable, como timestamp de unix (donde una fecha está dada en segundos) y así podrías hacer comparaciones más precisas.
  #5 (permalink)  
Antiguo 10/06/2011, 09:47
Avatar de Bullet  
Fecha de Ingreso: agosto-2005
Ubicación: Margarita, Venezuela
Mensajes: 235
Antigüedad: 18 años, 8 meses
Puntos: 1
Respuesta: Validacion de fechas

Okkk, bueno eso no lo sabia, incluso hice la comparacion como numeros enteros colocando los valores del intervalo que manejo y tampoco me los guardo, me arroja el mensaje de error; como seria un ejemplo con la funcion timestamp?
  #6 (permalink)  
Antiguo 10/06/2011, 09:57
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 14 años, 10 meses
Puntos: 641
Respuesta: Validacion de fechas

por que no ingresas la fecha de esta forma

$_POST['dia'] y $_POST['mes']

y validas que $dia sea

Código PHP:
Ver original
  1. if($dia<31 && $dia>0){
  2. //bien
  3. }else{
  4. //mal
  5. }

y $mes

Código PHP:
Ver original
  1. if($mes<12 && $mes>0){
  2. //bien
  3. }else{
  4. //mal
  5. }

en caso de que los tengas necesariamente juntos podrías usar un explode.
  #7 (permalink)  
Antiguo 10/06/2011, 10:20
Avatar de Bullet  
Fecha de Ingreso: agosto-2005
Ubicación: Margarita, Venezuela
Mensajes: 235
Antigüedad: 18 años, 8 meses
Puntos: 1
Respuesta: Validacion de fechas

Que tal amigo, bueno dejame intentarlo asi, cualquier cosa vuelvo y comento. Saludos y gracias!!!

EDITO

Que tal amigo memoadian, el codigo que me proporcionaste funciona, pero hay algo que no entiendo en las condiciones y es que a partir del mes 12 me lanza el mensaje de error, y en el dia me lo registra incluso mayores a 31, aqui te dejo la modificacion que hhice del codigo a ver si esta bien.

Código PHP:
$mes $_POST['mes'];
$dia $_POST['dia'];
    if(
$mes<12 && $mes>0){
    return 
1;
    }else{
    echo 
'error en el mes' $error '';
    exit;
    }
    if(
$dia<31 && $dia>0){
    return 
1;
    }else{
    echo 
'error en el dia' $error '';
    exit;
    } 
no se si es que los returns estan mal ubicados, pero solo funciona el del mes y a partir de 12. Saludos!!

Última edición por Bullet; 10/06/2011 a las 11:02
  #8 (permalink)  
Antiguo 13/06/2011, 10:25
Avatar de Bullet  
Fecha de Ingreso: agosto-2005
Ubicación: Margarita, Venezuela
Mensajes: 235
Antigüedad: 18 años, 8 meses
Puntos: 1
Respuesta: Validacion de fechas

Que tal amigos, bueno ya resolvi el asunto del dia y del mes, meti cada condicional en una funcion y al final se las asigno a cada variable, ahora lo que queiro hacer es la validacion de los meses que tienen 30 dias y febrero que llega hasta 29, pero no me sale, a ver si me pueden ayudar, el codigo que hice fue este, es algo sencillo, pero no se si esta malo:

Código PHP:
function mes_feb($feb,$dfeb){
$feb $_POST['mes'];
$dfeb $_POST['dia'];
  if ((
$feb 02) and ($dfeb 29)){
       echo 
'error, Febrero no tiene 30 o mas dias';
    echo 
'<a href="javascript: window.history.back()"><< Regresar a solucionar el problema</a>';
    exit;
  }else{
      return 
1;
  }
 } 
$feb mes_feb($feb);
$dfeb mes_feb($dfeb);

function 
mes_abr($abr,$dabr){
$abr $_POST['mes'];
$dabr $_POST['dia'];
  if ((
$abr 04) and ($dabr 30)){
       echo 
'error, Abril no tiene 31 o mas dias';
    echo 
'<a href="javascript: window.history.back()"><< Regresar a solucionar el problema</a>';
    exit;
  }else{
      return 
1;
  }
}
$abr mes_abr($abr);
$dabr mes_abr($dabr); 
Con este codigo de ejemplo, me compara solo le mes de febrero, y cuando meto el mes de abril, me sale como si estuviese comparandose febrero, y no abril, espero me puedan ayudar, saludos..

EDICION

Que mas amigos, decidi resolver con una funcion que tenia pro ahi que me verifica la fecha, solo que pongo tooda la fecha en un solo textbox, y funciona bien, pero ahora lo que quiero hacer es lo siguiente, que me ponga el / cuando escriba tanto el dia como el mes sin necesidad de yo tener que agregarlo manualmente, hay alguna forma de hacerlo, o agregarlo a la funcion que estoy usando?? Saludos!!

Última edición por Bullet; 13/06/2011 a las 14:39

Etiquetas: fechas
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 14:22.