Calcul de l’age à partir de la date de naissance, en PHP
Petit script PHP pratique pour faire des statistiques sur les ages à partir d’une base MySQL…
2 Méthodes :
============================
Extraire en boucle les dates de naissance de la table. La date sera normalement au format MySQL, soit :
$date_naissance = 'AAAA-mm-jj';
L’année, le mois et le jours en cours sont donnée par la fonction date() :
$annow=date('Y');
$moisnow=date('m');
$journow=date('d');
On va extraire l’année de naissance, la soustraire de l’année en cours, et enfin ajuster en fonction de la date d’anniversaire (passée ou non cette année)
list($annais,$moisnais,$journais)=explode('-',$date_naissance);
$age = $annow-$annais;
if ($moisnow<$moisnais) { $age=$age-1; }
if ($journow<$journais && $moisjour==$moisnais){$age=$age-1;}
echo $age;
============================
Autre possibilité, pour automatiser le calcul en créant une fonction :
<?php
function age($naiss) {
list($annee, $mois, $jour) = split('[-.]', $naiss);
$today['mois'] = date('n');
$today['jour'] = date('j');
$today['annee'] = date('Y');
$annees = $today['annee'] - $annee;
if ($today['mois'] <= $mois) {
if ($mois == $today['mois']) {
if ($jour > $today['jour'])
$annees--;
}
else
$annees--;
}
echo $annees;
}
age('1948-05-20')
?>
C’est tout
Heu il sort d’ou ton « $moisjour » ?
exact pour la seconde méthode : le code commence à dater (2005)…
En fait en remplaçant split() par un explode() on devrait y arriver aussi, on n’a pas besoin des expressions rationnelles sur ce coup là qui est simple.
Split renvoie malheureusement un Deprecated à partir de PHP 5.3.0
:)) c genial :bravo: