Foros del Web » Programando para Internet » PHP »

Mega Validacion de 2 fechas!

Estas en el tema de Mega Validacion de 2 fechas! en el foro de PHP en Foros del Web. Problema: al mirar lo que quiero parece simple pero al final se complica... lo que quiero es una funcion que valide 2 fechas de un ...
  #1 (permalink)  
Antiguo 09/05/2008, 12:50
Avatar de farra  
Fecha de Ingreso: marzo-2008
Ubicación: Aqui estoy
Mensajes: 574
Antigüedad: 16 años, 1 mes
Puntos: 20
Pregunta Mega Validacion de 2 fechas!

Problema:

al mirar lo que quiero parece simple pero al final se complica...

lo que quiero es una funcion que valide 2 fechas de un evento..

1) fecha de inicio y fecha de finalizacion

obviamente la fecha de inicio debe ser mayor a la de finalizacion y ambas deben ser mayor a hoy...

la funcion quiero que me sirva para validar en un insert y para tirar mensajes de error en el formulario para eso uso: $result si es vacio es para el insert caso contrario es para el formulario...


Fecha de inicio:
1) la fecha de inicio debe ser mayor o igual a hoy
2) la fecha de inicio debe ser menor a la fecha final

Fecha Final:
1) la fecha final debe ser mayor o igual a hoy
2) la fecha final debe ser mayor a la fecha de inicio


Resultado:

Si $result = "" hacer esto:

$Cual es 1:
1) si cumple con todas las condiciones devolver la fecha, caso contrario devolver vacio

$Cual es 2:
1) si cumple con todas las condiciones devolver la fecha, caso contrario devolver vacio

$Cual es 3:
1) si cumple con todas las condiciones devolver SI, caso contrario devolver NO



Si $result = "valor" hacer esto:


$Cual es 1:
1) si cumple con todas las condiciones devolver la fecha, caso contrario devolver la Fecha

$Cual es 2:
1) si cumple con todas las condiciones devolver la fecha, caso contrario devolver la Fecha

$Cual es 3:
1) si cumple con todas las condiciones devolver SI, caso contrario devolver NO




Ejemplo de como llamar a la funcion:

echo validarfechas($fechaini,$fechafin,$cual,$result);


El valor de cual puede ser solo 1,2 o 3
El valor de result puede ser solo 'vacio' o Valor
__________________
Firma:
Es mas dificil para el mono entender que el hombre desciende de el....

PD: Siempre doy karma al que me da una buena respuesta... ;0)
  #2 (permalink)  
Antiguo 09/05/2008, 12:53
Avatar de farra  
Fecha de Ingreso: marzo-2008
Ubicación: Aqui estoy
Mensajes: 574
Antigüedad: 16 años, 1 mes
Puntos: 20
Re: Mega Validacion de 2 fechas!

hasta ahora esto es lo que logre..

no me funciona... quiero que me tire el error correspondiente al lo que fallo...

Código PHP:

//////*****/////// Inicio valida fecha //////*****///////
function validafecha($fecha){
$Diar=date("d"strtotime($fecha));
$Mesr=date("m"strtotime($fecha));
$Anhor=date("Y"strtotime($fecha));
    if((
$Diar != "") && ($Mesr != "") && ($Anhor != "")){
        if (
checkdate($Mesr$Diar$Anhor)) {
            
$fechaValida=$fecha;
        } else {
            
$fechaValida=""// no es valida
        
}
    }
    return 
$fechaValida;
}
//////*****/////// Fin valida fecha //////*****///////


//////*****/////// Inicio funcion que valida las fechas de inicio y final //////*****///////
function validarfechas($fechaini,$fechafin,$cual,$result){
$valido="NO";
$hoy=date("Y-m-d");



// descomponemos las fechas
$fecarini=explode("/"$fechaini);
$fecarfin=explode("/"$fechafin);

//valida que sea una fecha
    
$Diar=$fecar[0];
    
$Mesr=$fecar[1];
    
$Anhor=$fecar[2];
    
$fecini=$Anhor."-".$Mesr."-".$Diar;
    
$fecinivalidada=validafecha($fecini); // devuelve fecha o vacio

    
$Diar2=$fecar[0];
    
$Mesr2=$fecar[1];
    
$Anhor2=$fecar[2];
    
$fecfin=$Anhor2."-".$Mesr2."-".$Diar2;
    
$fecfinvalidada=validafecha($fecfin); // devuelve fecha o vacio

// validar que la fecha de inicio sea mayor o igual a hoy
    
if(($fecinivalidada != "") && ($fecinivalidada >= $hoy)){ 
        
$feciniesmayorahoy="SI";
    }
// validar que la fecha final sea mayor o igual a hoy
    
if(($fecfinvalidada != "") && ($fecfinvalidada >= $hoy)){ 
        
$fecfinesmayorahoy="SI";
    }

// validar que la fecha final sea mayor o igual a la fecha de inicio
    
if(($fecinivalidada != "") && ($fecfinvalidada != "") &&  ($fecinivalidada >=  $fecfinvalidada)){
        
$fechafinesmayoroigualanini="SI";
    }else{
        
$fechafinesmayoroigualanini="NO";
    }

// Fecha Inicio
    
if($cual == "1"){
        
$fechares=$fecinivalidada;
    }
// Fecha Fin
    
if($cual == "2"){
        
$fechares=$fecfinvalidada;
    }
// Ambas Fechas
// devuelve SI o NO dependiendo que cumpla con todos los requisitos
    
if($cual == "ambos"){
            
$fechares=$fechafinesmayoroigualanini;
    }

 return 
$fechares;

}
//////*****/////// Fin funcion que valida las fechas //////*****/////// 
pero no funciona todavia
__________________
Firma:
Es mas dificil para el mono entender que el hombre desciende de el....

PD: Siempre doy karma al que me da una buena respuesta... ;0)
  #3 (permalink)  
Antiguo 09/05/2008, 12:59
Avatar de farra  
Fecha de Ingreso: marzo-2008
Ubicación: Aqui estoy
Mensajes: 574
Antigüedad: 16 años, 1 mes
Puntos: 20
Re: Mega Validacion de 2 fechas!

Tengo un array de errores...

Código PHP:

$Errrores
"Debe completar este campo,La Fecha debe ser mayor a hoy, La fecha de inicio debe ser mayor a la fecha de finalizacion";

$Error=explode(","$Errrores); 
entonces en caso que haya en error quiero que me devuelva e error correspondiente en el campo correspondiente...
__________________
Firma:
Es mas dificil para el mono entender que el hombre desciende de el....

PD: Siempre doy karma al que me da una buena respuesta... ;0)
  #4 (permalink)  
Antiguo 09/05/2008, 13:07
Avatar de farra  
Fecha de Ingreso: marzo-2008
Ubicación: Aqui estoy
Mensajes: 574
Antigüedad: 16 años, 1 mes
Puntos: 20
Re: Mega Validacion de 2 fechas!

El Formulario:

Código PHP:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<style type="text/css">
<!--
.style1 {font-size: 12px}
-->
</style>
</head>

<body>
<form id="form1" name="form1" method="post" action="">
  <label>
  
  </label>
  <table width="90%" border="0">
    <tr>
      <td align="right">Iniciar:</td>
      <td align="left" class="style1"><label>
        <?
if(trim($_POST['fechaini']) != ""){ 
$fechacal=htmlentities($_POST['fechaini']);
}else{
$fechacal="Elejir Fecha >>";
}              

?><input type="text" name="fechaini" id="fechaini" value="<?php echo $fechacal?>" />
        </label>
          <label>dd/mm/yyyy</label></td>
    </tr>
    <tr>
      <td align="right">&nbsp;</td>
      <td align="left" class="style1"><?php if ($_POST['MM_Insert'] == "form1"){ ?>
<?php 
echo validarfechas($_POST['fechaini'],$_POST['fechafin'],"1",""); ?>
<?php 
?></td>
    </tr>
    <tr>
      <td align="right">Finalizar:</td>
      <td align="left" class="style1"><label>
        <?
if(trim($_POST['fechaini']) != ""){ 
$fechacal2=htmlentities($_POST['fechafin']);
}else{
$fechacal2="Elejir Fecha >>";
}

?><input type="text" name="fechaini" id="fechaini" value="<?php echo $fechacal?>" />
        </label>
          <label>dd/mm/yyyy</label></td>
    </tr>
    <tr>
      <td align="right">&nbsp;</td>
      <td align="left" class="style1"><?php if ($_POST['MM_Insert'] == "form1"){ ?>
<?php 
echo validarfechas($_POST['fechaini'],$_POST['fechafin'],"2",""); ?>
<?php 
?></td>
    </tr>
  </table>
  <p>
    <label>
    <input type="submit" name="button" id="button" value="Enviar" />
    </label>
    <input type="hidden" name="MM_Insert" id="MM_Insert" value="form1" />
  </p>
</form>
</body>
</html>
__________________
Firma:
Es mas dificil para el mono entender que el hombre desciende de el....

PD: Siempre doy karma al que me da una buena respuesta... ;0)
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 19:22.