Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   PHP (https://www.clubdelphi.com/foros/forumdisplay.php?f=15)
-   -   Problemas comparando fechas (https://www.clubdelphi.com/foros/showthread.php?t=84970)

jhonalone 07-01-2014 15:06:11

Problemas comparando fechas
 
Hola, amigos.
Tengo un problema con un script.
Quisiera averiguar si un visitante es mayor de edad. Para eso, comparo la fecha obtenida de un formulario HTML y la obtenida con getdate(del servidor).
El problema que tengo es que siendo ambas fechas el mismo mes (enero, por ejemplo) el servidor considera menor la fecha obtenida con getdate() que la obtenida desde el formulario.
A continuación os dejo la parte del script que hace esta tarea, por si alguien puede echarme una mano.

<?php


$dia = $_POST['day'];
$mes = $_POST['month'];
$anio = $_POST['year'];

$control = $_POST["Control1"];

setlocale (LC_TIME, "es_ES");

$hoy = getdate();
$AnioActual = $hoy[year];
$mesActual = $hoy[mon];
$diaActual = $hoy[mday];


if ($AnioActual-$anio <=18) // Diferencia entre años MENOR O IGUAL que 18
{
if ($AnioActual-$anio <18) // diferencia entre años MENOR que 18
{
$control = "Error en la edad";
?>
<script type="text/javascript">
<!--
alert('Según la fecha del sistema Vd. es menor de edad año.');
//-->
</script>
<?php
} else // diferencia entre años IGUAL a 18
{
if ($MesActual <= $mes) // mes actual MENOR O IGUAL que cumpleaños
{
if ($MesActual < $mes) //mes actual MENOR que cumpleaños (no ha cumplido 18)
{echo($mesActual. "Actual" .$mes. "mes" .$anio. "Año" .$AnioActual. "AñoActual");
$control = "Error en la edad";//AQUI ES DONDE TENGO EL PROBLEMA, PUES CONSIDERA MENOR EL MES ACTUAL AUNQUE SEAN IGUALES (LO COMPRUEBO EN LA PANTALLA CON ECHO)

?>
<script type="text/javascript">
<!--
alert(' año igual mes actual menor.');
//-->
</script>
<?php
} else // mes actual y año actual igual que cumpleaños (Decide el dia del mes)
{
if ($DiaActual < $dia) // todavia no ha cumplido los 18
{ echo($mesActual. "Actual" .$mes. "mes" .$anio. "Año" .$AnioActual. "AñoActual");
$control = "Error en la edad";
?>
<script type="text/javascript">
<!--
alert(' año igual mes igual dia actual antes del cumpleaños.');
//-->
</script>
<?php
}
}
}
}
};

// Hay otras instrucciones que vienen al caso......................................
?>

Agradezco de antemano cualquier ayuda. Gracias.

cloayza 07-01-2014 17:57:53

Creo que el problema es que PHP es sensible a minusculas y mayusculas para nombres de variables

Código PHP:

<?php

$dia 
$_POST['day'];
$mes $_POST['month'];
$anio $_POST['year'];

$control $_POST["Control1"];

setlocale (LC_TIME"es_ES");

$hoy getdate();
$AnioActual $hoy[year];
$mesActual $hoy[mon];
$diaActual $hoy[mday];


if (
$AnioActual-$anio <=18// Diferencia entre años MENOR O IGUAL que 18
{
   if (
$AnioActual-$anio <18// diferencia entre años MENOR que 18
   
{
      
$control "Error en la edad";
?>
      <script type="text/javascript">
      <!--
      alert('Según la fecha del sistema Vd. es menor de edad año.');
      //-->
      </script>
<?php
   
} else // diferencia entre años IGUAL a 18
   
{
      if (
$MesActual <= $mes// mes actual MENOR O IGUAL que cumpleaños
      
{
         if (
$MesActual $mes//mes actual MENOR que cumpleaños (no ha cumplido 18)
         
{
            echo(
$mesActual"Actual" .$mes"mes" .$anio"Año" .$AnioActual"AñoActual");
            
$control "Error en la edad";//AQUI ES DONDE TENGO EL PROBLEMA, PUES CONSIDERA MENOR EL MES ACTUAL AUNQUE SEAN IGUALES (LO COMPRUEBO EN LA PANTALLA CON ECHO)

?>
         <script type="text/javascript">
         <!--
         alert(' año igual mes actual menor.');
         //-->
         </script>
<?php
         
} else // mes actual y año actual igual que cumpleaños (Decide el dia del mes)
         
{
// 
// Aquí estaría el problema...$DiaActual<>$diaActual
//      
            //if ($DiaActual < $dia) 
            
if ($diaActual $dia// todavia no ha cumplido los 18
            
{
               echo(
$mesActual"Actual" .$mes"mes" .$anio"Año" .$AnioActual"AñoActual");
               
$control "Error en la edad";
?>
              <script type="text/javascript">
              <!--
              alert(' año igual mes igual dia actual antes del cumpleaños.');
              //-->
              </script>
<?php
            
}
         }
      }
   }
};

// Hay otras instrucciones que vienen al caso......................................
?>

Saludos cordiales

ecfisa 07-01-2014 18:32:07

Hola jhonalone.

Por favor no olvides el uso de las etiquetas cuando incluyas código. En el caso de PHP es: [php] tu_codigo [/php]

Saludos :)

jhonalone 07-01-2014 21:57:57

Gracias a ambos por ayudarme.
A cloayza por haberme abierto los ojos. ¡Cómo he podido ser tan BUUUUURRO!
A ecfisa por decirme cómo se pone el código php en los posts. Bien sabe Dios que lo he estado buscando en los iconitos de arriba a derecha, pero nunca había posteado nada en php.

¡¡MUCHAS GRACIAS A AMBOS!!
Saludos.


La franja horaria es GMT +2. Ahora son las 04:36:56.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi