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. ?>