CALCULER L'AGE À PARTIR D'UNE DATE DE NAISSANCE (IDÉAL POUR UN SITE COMMUNAUTAIR

matrey Messages postés 399 Date d'inscription jeudi 31 janvier 2002 Statut Membre Dernière intervention 6 septembre 2004 - 1 juil. 2003 à 19:30
fafa1510 Messages postés 2 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 8 novembre 2005 - 8 nov. 2005 à 17:08
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/13372-calculer-l-age-a-partir-d-une-date-de-naissance-ideal-pour-un-site-communautaire

fafa1510 Messages postés 2 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 8 novembre 2005
8 nov. 2005 à 17:08
// on décortique la date d'aujourd'hui (jour,mois et année):
$an_now=date("Y");
$mois_now=date("m");
$jour_now=date("d");

$date_nais = "1985/10/15" //année,mois,jour

//on décortique la date de naissance (jour,mois et année):
$an=substr($date_nais,0,4);
$mois=substr($date_nais],5,2);
$jour=substr($date_nais,8,2);

//on soustrait l'année de naissance de l'année actuelle :
$age=$an_now-$an;

//si le jour de naissance n'est pas encore passé, on retire une année :
if (($mois>$mois_now) or (($mois==$mois_now) and ($jour>$jour_now))) { $age=$age-1; }

echo $age;
alexledoberman Messages postés 1 Date d'inscription mercredi 15 novembre 2000 Statut Membre Dernière intervention 4 mai 2005
4 mai 2005 à 14:13
salut je voudrais savoir coment on fait suite a la source que tu donne.
Dit moi comment on fait
merci
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
26 mai 2004 à 15:31
le problème jeromeke, c'est que, comme le faisaient remarquer les autres, ce code ne fonctionne que pour les dates postérieures au premier janvier 1970, c'est gênant vu la moyenne d'âge européenne ^^
jeromeke Messages postés 9 Date d'inscription mercredi 12 mai 2004 Statut Membre Dernière intervention 31 mai 2004
26 mai 2004 à 06:51
Super ton code Kirua! Merci bcp!
JielJacq Messages postés 7 Date d'inscription mardi 28 janvier 2003 Statut Membre Dernière intervention 2 août 2005
17 mai 2004 à 22:48
bon ben je vais m'y mettre au php et à .. MySQL.... si vous avez quelques bonnes adresses, je suis preneur... à un niveau débutant bien sûr !
virtuelkiller Messages postés 44 Date d'inscription samedi 8 mars 2003 Statut Membre Dernière intervention 9 mars 2016
17 mai 2004 à 17:24
Je vous conseille de vous mettre au PHP avec l'excellent site www.az-php.com
Il vosu apprendra le nécessaire pour réaliser ce que vous cherchez à faire.
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
17 mai 2004 à 16:55
Pr ça va falloir que tu trouves des tutos sur les bases access avec PHP, je connais pas ça :-/ bcp de gens utilisent MySQL qui est gratuit et bien représenté sur les forums. Essaye de ce côté là.
JielJacq Messages postés 7 Date d'inscription mardi 28 janvier 2003 Statut Membre Dernière intervention 2 août 2005
17 mai 2004 à 08:26
Bonjour,

J'ai vu votre script... il m'a intéressé... mais moi je n'y connais rien en php...
Voici ce que je voudrais faire :
Afficher sur une page du site de mon village, les anniversaires au départ d'une base access ou excell.
Il n'y a pas bcp de requête par jour, environ 15.

On pourrait donc voir sur le site :
Aujourd'hui, le 15/10/2004, c'est l'anniversaire de xavier machin, il a 32 ans
Cette semaine, c'est aussi l'anniversaire de Nathalie MAchin (23 ans le 17/10)
Vous avez peut être loupé l'anniversaire de Marc Truc, 13 ans le 10/10.
cs_seyev Messages postés 93 Date d'inscription samedi 9 juin 2001 Statut Membre Dernière intervention 6 mai 2005 1
3 mars 2004 à 16:46
Le code que donne matrey ne fonctionne pas avec les 1er janviers au dessous de 1971.. Pour palier a ce problème, il faut modicier ceci:
if ($m_date[1] < 1970) {
$plus = 1970 - $m_date[1];
$annee = 1970;
}else{
$plus = 0;
$annee = $m_date[1];
}

en ceci:
if ($m_date[1] < 1971) {
$plus = 1971 - $m_date[1];
$annee = 1971;
}else{
$plus = 0;
$annee = $m_date[1];
}

Voila..
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
4 juil. 2003 à 22:20
t'as raison c'est limité à 33 ans pour l'instant, mais dans 70 ans tu verras ça suffira ;-)
matrey Messages postés 399 Date d'inscription jeudi 31 janvier 2002 Statut Membre Dernière intervention 6 septembre 2004
4 juil. 2003 à 10:24
donc il faut pas être trop vieux...
je maintiens mon code et d'ailleur celui de virtuelkiller aussi
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
3 juil. 2003 à 23:51
c'est ok ça marche. dans mon cas (17 / 02 / 1987) ça donne bien 16 ans. (en considérant que je suis né à 0h00)

<?
$naissance = mktime(0, 0, 0, 2, 17, 1987);
$diff = time() - $naissance;
$age = date('Y', $diff) - 1970;
echo $age;
?>


quelqu'un a plus court? :-)

pr info, faut retirer 1970 puisque ça donne en fait la date calculée à partir des secondes écoulées depuis le 1er janvier 1970.
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
3 juil. 2003 à 23:47
c'est en fait simplement (désolé ;-)) un calcul de différence (entre deux date)

donc à mon, avis -> time() - mktime(... les arguments pr la date de naissance ...)

ça donnera le time de différence

puis date("Y", $le_time_obtenu) - 1970; et ça devrait aller non ?

je fias u nteste et je reviens
virtuelkiller Messages postés 44 Date d'inscription samedi 8 mars 2003 Statut Membre Dernière intervention 9 mars 2016
2 juil. 2003 à 11:14
Hey ouai !
C'est pas mal aussi comme ça !
++
www.arena-games.net
V.K.
matrey Messages postés 399 Date d'inscription jeudi 31 janvier 2002 Statut Membre Dernière intervention 6 septembre 2004
1 juil. 2003 à 20:04
désolé les tabulations passent pas, c'est juste moins lisible..
matrey Messages postés 399 Date d'inscription jeudi 31 janvier 2002 Statut Membre Dernière intervention 6 septembre 2004
1 juil. 2003 à 20:02
// Fonction qui renvoie l'age à partir de la date de naissance
// Par matrey <matreypub@hotmail.com>
function age($date){
$date_current=mktime(0,0,0,date("n"),date("d"),date("Y"));
if (!$date){
return 0;
}else{
ereg("^([0-9]{2,4})-([0-9]{1,2})-([0-9]{1,2})$",$date,$m_date);
if ($m_date[1] < 1970) {
$plus = 1970 - $m_date[1];
$annee = 1970;
}else{
$plus = 0;
$annee = $m_date[1];
}
$date_born=mktime(0,0,0,$m_date[2],$m_date[3],$annee);
$diff = floor((($date_current - $date_born) / (3600 * 24))/365)+$plus;
if ($diff < 0){
return 0;
}elseif ($diff == 0){
$diff = floor((($date_current - $date_born) / (3600 * 24))/30);
return $diff." mois";
}elseif ($diff == 1){
return $diff." an";
}else{
return $diff." ans";
}
}
}
matrey Messages postés 399 Date d'inscription jeudi 31 janvier 2002 Statut Membre Dernière intervention 6 septembre 2004
1 juil. 2003 à 19:30
très très très très très très très très long
je passe sur mon 2e PC et je te donne ma version, bcp plus ourte
Rejoignez-nous