Inicio Apuntes FPApuntes DAW Ejercicio Básico 18 PHP: Calculadora de edad

Ejercicio Básico 18 PHP: Calculadora de edad

Publicado por entreunosyceros
Publicado el: Última actualización:

AVISO: Esta entrada tiene más de dos años desde su publicación. Es posible que el contenido esté desactualizado.

En el ejercicio que voy a publicar hoy, voy a crear una aplicación que será una calculadora. En ella vamos a introducir tu fecha de nacimiento y calcule tu edad en años, meses y días. El programa deberá dar el resultado en la que indique cuantos años, meses y días tienes. También nos dirá cuantos años tenemos, mostrará cuantos meses han pasado y cuantos días son la edad que tienes.

Como nota diré que tuve que consultar el uso de las funciones checkdate e intval, otra función con la que se puede desarrollar un programa así es strtotime. En este caso yo no la he utilizado, ya que creo que no me hizo falta para conseguir el resultado deseado.

Calculadora de edad con PHP

<?php
if (isset($_POST['Enviar'])){
    if(empty($_POST['dia']) || empty($_POST['mes']) || empty($_POST['anho'])){
        echo "Ningún campo de la fecha puede estar vacío. <a href='index.php' title='Volver'>Volver</a>";
    }else{
      //se comprueba que los valores introducidos son numeros
      if (is_numeric($_POST['dia']) &&
        is_numeric($_POST['mes']) &&
            is_numeric($_POST['anho'])) {
            //guardamos los valores dentro de sus variables correspondientes
                $dia =intval($_POST['dia']);
                $mes=intval($_POST['mes']);
                $anho=intval($_POST['anho']);
           //*****************************************    
           //con checkdate se comprueba que el formato de la fecha introducida es correcto
           if(checkdate($mes,$dia,$anho)){
                //le damos el formato que queremos a la fecha introducida
                $fecha_de_nacimiento=($dia."-".$mes."-".$anho);
                $fecha_actual = date ("d-m-Y"); //tomamos la fecha actual con formato día-mes-año
         //*****************************************
         // separamos en partes las fechas por el separador -
                $fech_naci = explode ( "-", $fecha_de_nacimiento );
                $fech_actu = explode ( "-", $fecha_actual );
         //*****************************************
                $anhos = $fech_actu[2] - $fech_naci[2]; // calculamos años
                $meses = $fech_actu[1] - $fech_naci[1]; // calculamos meses
                $dias = $fech_actu[0] - $fech_naci[0]; //calculamos los días
         
         //*****************************************
         //calculamos los totales de los meses y los días
                if ($anhos==0){
                    $mesesTotales=$meses;
                }else{
                    $mesesTotales=($anhos*12)+$meses;
                }
               
                if ($meses==0){
                    $diasTotales=$dias;
                }else{
                    $diasTotales=($mesesTotales*30)+$dias;
                }
        //*****************************************
        //si alguna de las operaciones da negativo
        //se multiplicará el valor por -1 para volverlo positivo
                $anhos < 0 ? $anhos *= -1 : $anhos = $anhos;
                $meses < 0 ? $meses *= -1 : $meses = $meses;
                $dias < 0 ? $dias *= -1 : $dias = $dias;
        //*****************************************
        //imprimimos el resultado
                echo "Tu edad es de: ".intval($anhos)." años con ".intval($meses)." meses y ".$dias." días<br>";
                echo "<hr>";
                echo "Los años totales desde ".$fecha_de_nacimiento." son; ".$anhos." años<br>";
                echo "Los meses totales desde ".$fecha_de_nacimiento." son: ".$mesesTotales." meses<br>";
                echo "Los días totales desde ".$fecha_de_nacimiento." son: ".$diasTotales." días<br>";
                echo "<hr>";
                echo "<a href='index.php' title='Volver'>Volver</a>";
               
            }else{
                echo "ERROR los datos de la fecha son incorrectos.<br>";
                echo "<a href='index.php' title='Volver'>Volver</a>";
            }
           
    }else{
        echo "ERROR, solo se pueden introducir números en todos los campos.<br>";
        echo "<a href='index.php' title='Volver'>Volver</a>";
    }
  }
}else{
 
?>    
<form action="index.php" method="post" name="form" id="form"><!--Inicio formulario-->
   
      <table align="center" border="1" >  
                       
            <tr><!--línea texto-->
                <td align="center" colspan="2" bgcolor="#f0f0f0">
                    <h2>
                       Escribe tu fecha de cumpleaños<br>
                    </h2>                    
                </td>
            </tr><!--Fin de la línea texto-->
           
            <tr><!--Línea fecha-->
                <td bgcolor="#f0f0f0">Fecha: </td>
                <td align="center">
                Día<input type="text" name="dia" size="2" maxlength="2">
                Mes<input type="text" name="mes" size="2" maxlength="2">
                Año<input type="text" name="anho" size="4" maxlength="4">
                </td>
            </tr><!--Fin de la línea fecha-->
           
            <tr><!--línea de botones-->
                <td align="center" bgcolor="#f0f0f0" colspan="2">
                  <input type="submit" value="enviar" name="Enviar" title="Enviar" />
                   || 
                  <input type="reset" value="borrar" name="borrar" title="borrar" />
                </td>
            </tr><!--Fin línea de botones-->
           
        </table><!--FIN de la tabla-->
     
    </form><!--Fin del formulario-->
    <?php
        } //cerramos el else para evitar que se imprima en el resultado en la misma
        //página que el formulario.
    ?>

 

También te puede interesar ...

Deja un comentario

* Al utilizar este formulario, aceptas que este sitio web almacene y maneje tus datos.

Adblock Detectado!!

Ayúdanos deshabilitando la extensión AdBlocker de tu navegador para visitar esta web.
Si no sabes hacerlo en Chrome, consulta el siguiente enlace. Si utilizas Firefox, puedes consultar este otro enlace.
Esto mejorará tu experiencia en este sitio web.