Calculo de Edad ( en php)

trinytron

Hola, me gustaria que me hecharais un cable con mi script.

include 'includes/db.php';
$sql_usuarios = mysql_query ('SELECT * FROM ns_users');

//Consultamos datos de la BD
while($row = mysql_fetch_array($sql_usuarios)) {

//Imprimimos resultados
$nombre = $row["nombre"];
$apellidos = $row["apellidos"];
$nacimiento = $row["nacimiento"];

echo 'Nombre: ' .$nombre. ' Apellidos: ' .$apellidos. ' Nacimiento: ' .$nacimiento;

//$dia = dia de nacimiento
//$mes = mes de nacimiento
//$ano = año de nacimiento
list($dia,$mes,$ano) = explode("/",$nacimiento);

$diaa = date('d');
$mesa = date('m');
$anoa = date('Y');

$time = mktime(0,0,0,$mes,$dia,$ano);
$timef = mktime(0,0,0,$mesa,$diaa,$anoa);
$edad = intval(($timef - $time)/(606024*365));

echo ' Edad: ' .$edad. '<\br>';

}

El problema con el que me encuentro, esque una persona nacida en 1988 me dice que tiene 17 años, pero una persona nacida en 1900 y 1950 me dice que tiene 35 años.

Alguien me puede ayudar???

_BoJa_69

Échale un vistazo a otras funciones hechas para este mismo fin y quizás encuentres el fallo.

http://www.google.es/search?q=calculo+edad+php

EnZo

Ese problema lo tube yo. Cuando tu usas la funcion mktime() estas pasando la fecha dada a formato unixtime. Ques el tiempo en segundos transcurridos desde el 1/1/1970.
Si tu le pasas una fecha anterior ejem 1950 o 1900 la funcion te dara error. Asi que necesitas una libreria.
http://adodb.sourceforge.net/
http://www.phpsector.com/s72-ADOdb+Date+and+Time+Library.html

Bajate eso. Primero tienes que hacerle un include al archivo adodb.inc.php
ejem:
include('la carpeta donde la metas/adodb.inc.php');

Y luego usas la funcion mktime asi:

$time = adodb_mktime(0,0,0,$mes,$dia,$ano);
$timef = adodb_mktime(0,0,0,$mesa,$diaa,$anoa);

Si tienes mas dudas consulta en google que hay mas ejemplos.

trinytron

ThX enzo, ahora probare ^^

P.D: Testeado y funciona perfect :) ThX

Usuarios habituales

  • trinytron
  • EnZo
  • _BoJa_69