En este código se una un formulario HTML con un campo fecha donde la persona escribe su fecha de nacimiento en el formato dia/mes/año al dar clic en el botón Consultar.
<h1>Calculo de Edad</h1> <form id="form1" name="form1" method="post" action=""> <label for="textfield">Fecha de Nacimiento</label> <input type="text" name="fecha" id="fecha" /> Formato (dia/mes/año) ejemp: 16/01/1980 <input type="button" id="consultar" value="Consultar" /> </form>
El evento clic del botón se maneja con JavaScript usando jQuery
<script> $( document ).ready(function() { $("#consultar").click(function(){ fecha = $("#fecha").val(); $.get( "calcular.php", {fecha: fecha}, function( data ) { $( "#edad" ).html( data ); }); }); }); </script>
Se usa $.get para el envió de la fecha a PHP, este se recibe y se hace el proceso del calculo, el código es el siguiente:
<?php //Recibimos los datos enviado por el formulario //si se recibe la fecha se devuelve la fecha sino se devuelve vacio $fecha = isset($_GET['fecha']) ? $_GET['fecha'] : "" ; $errores = ""; if (!$fecha){ echo "Error fecha no vacia"; exit(); } $pfecha = explode('/', $fecha); if (count($pfecha)<2){ echo "Error fecha no vacia"; exit(); //detenemos la ejecución } $fechavalida = checkdate($pfecha[1], $pfecha[0], $pfecha[2]); if ($fechavalida == false){ echo "Error fecha no válida"; exit(); } $edad = 0; //Fecha actual $dia=date("d"); $mes=date("m"); $anio=date("Y"); //fecha de nacimiento $dia_nc = $pfecha[0]; $mes_nc = $pfecha[1]; $anio_nc = $pfecha[2]; //restamos para calcular la edad parcial $edad = $anio - $anio_nc; //le restamos un años si el mes es igual al mes de su cumpleaños pero su dia no //ejemplo si cumple en enero 26 y la fecha actual es enero 25 hay que retar por que no ha cumplido if (($mes_nc == $mes) && ($dia_nc > $dia)) $edad = ($edad - 1); //en este caso si todavia no es el mes de su cumple tambien se resta if ($mes_nc > $mes) $edad = ($edad - 1); if (!$errores) echo $edad; else echo $errores; ?>
Código para descargar Aquí
Contraseña: programaresfacil.co
Total Page Visits: 11827 - Today Page Visits: 5