salut.
je veux une fonction qui calcule l'age à partir de la date de naissance.
lorsque j'entre la date de naissance j'aurai l'age.
quelqu'un peut m'aider?
je vais détaillé un peu:
j'ai un formulaire dont je vais remplir les champs,et parmi ces champs j'ai la date de naissance.
lorsque je le remplie dans une autre page je vais appeler la variable age(par exemple) pour avoir l'age de cette personne.
Tu as une date que tu va pouvoir transformer en timestamp avec la fonction strtotime() ou mktime() par exemple. On peut savoir quel est le timestamp actuel sur le serveur avec time().
On soustrait le timestamp actuel avec le timestamp de la date de naissance. Tu obtient alors le nombre de secondes, au jour près, qui se sont écoulées durant la vie de la personne. Tu converti les secondes en années, mois, jours et le tour et joué !
Ok en remplaçant par 365.242 et en se souvenant que c'est une date américaine qu'il demande
Ouais, soit tu converti la date, soit tu la découpe et la passe à mktime(). Après effectivement, plus la donnée du nombre de secondes dans une année est précise, plus tu auras une valeur correct étant donnée que l'âge de la personne est généralement donnée en années
Mon 10 May 1920 > 89
Tue 11 May 1920 > 89
Wed 12 May 1920 > 89
Thu 13 May 1920 > 89
Fri 14 May 1920 > 88
On est le 12/05, comment tu expliques ??
Citation
[...] c'est valide à un jour près
Tu veux dire quoi exactement ?? que c'est parfois faux ?
Tracker.
Les années bissextiles sont régulièrement espacées donc y'a au plus un jour de décalage si le mec est né au mauvais moment. Et sinon ils auraient pas foutu d'année bissextile là.
Oui mais non , ce code ne fait pas ce qu'il faut. En fait, en faisant de nouveaux tests, je me suis aperçu qu'il n'était finalement pas correct, je l'ai donc revu et corrigé (il faut que je fasse la mise à jour sur le site d'ailleurs). J'ai conçu ce code pour afficher l'âge d'un membre sur son profil, et faire en sorte qu'il prenne 1, le jour même de son anniversaire (comme sur le sdz en fait). Il prend en compte les années bissextiles, pour les membres nés un 29 Février.
Donc voilà la correction :
<?php
//On définit le jour, mois et année actuels avec la fonction date() pour chacun d'eux.
$jour = date('d');
$mois = date('m');
$annee = date('Y');
$annee_bis = date('L');//Pour savoir si l'année actuelle est bissextile ou non. 1 si oui, 0 si non.
$jour_bis = 29;
$mois_bis = 02;
//On définit le jour, mois et année de naissance de la personne, obtenus à l'aide de la requête
$membre_jour_naiss = intval($resultat['membre_jour_naiss']);
$membre_mois_naiss = intval($resultat['membre_mois_naiss']);
$membre_annee_naiss = intval($resultat['membre_annee_naiss']);
//Si l'année est bissextile, pour ceux qui sont nés un 29 février et où l'anniversaire est passé.
if (($membre_annee_naiss < $annee) && ($annee_bis == 1) && (($mois > $membre_mois_naiss)
|| ($mois == $membre_mois_naiss && $jour >= $membre_jour_naiss)))
{
$age1 = $annee - $membre_annee_naiss;
echo '<img src="../Images/membres/icones/anniversaire.gif" class="images_sans_bordure" /><strong> Âge : </strong>'.$age1.' ans.';
}
//Si l'année est bissextile, pour ceux qui sont nés un 29 février et où l'anniversaire n'est pas passé.
elseif (($membre_annee_naiss < $annee) && ($annee_bis == 1) && (($mois < $membre_mois_naiss)
|| ($mois == $membre_mois_naiss && $jour < $membre_jour_naiss)))
{
$age2 = $annee - (++$membre_annee_naiss);
echo '<img src="../Images/membres/icones/anniversaire.gif" class="images_sans_bordure" /><strong> Âge : </strong>'.$age2.' ans.';
}
//Si l'année n'est pas bissextile, pour ceux qui sont nés un 29 février et où l'anniversaire est passé.
elseif (($membre_annee_naiss < $annee) && ($annee_bis == 0) && ($membre_jour_naiss == $jour_bis) && ($jour == 28) && ($membre_jour_naiss > $jour)
&& ($membre_mois_naiss == $mois_bis) && ($mois >= $mois_bis) && ($membre_mois_naiss <= $mois))
{
$age1 = $annee - $membre_annee_naiss;
echo '<img src="../Images/membres/icones/anniversaire.gif" class="images_sans_bordure" /><strong> Âge : </strong>'.$age1.' ans.';
}
//Si l'année n'est pas bissextile, pour ceux qui sont nés un 29 février et où l'anniversaire n'est pas passé.
elseif (($membre_annee_naiss < $annee) && ($annee_bis == 0) && ($membre_jour_naiss == $jour_bis) && ($jour < 28) && ($membre_jour_naiss < $jour)
&& ($membre_mois_naiss <= $mois_bis) && ($mois <= $mois_bis) && ($membre_mois_naiss <= $mois))
{
$age2 = $annee - (++$membre_annee_naiss);
echo '<img src="../Images/membres/icones/anniversaire.gif" class="images_sans_bordure" /><strong> Âge : </strong>'.$age2.' ans.';
}
//On a le cas ici, où l'anniversaire est passé..
elseif ($membre_annee_naiss < $annee && (($mois > $membre_mois_naiss)
|| ($jour > $membre_jour_naiss)
|| ($mois == $membre_mois_naiss && $jour == $membre_jour_naiss)))
{
$age1 = $annee - $membre_annee_naiss;
echo '<img src="../Images/membres/icones/anniversaire.gif" class="images_sans_bordure" /><strong> Âge : </strong>'.$age1.' ans.';
}
else //Sinon, Si l'anniversaire n'est pas passé.
{
$age2 = $annee - (++$membre_annee_naiss);
echo '<img src="../Images/membres/icones/anniversaire.gif" class="images_sans_bordure" /><strong> Âge : </strong>'.$age2.' ans.';
}
?>
Il y a peut-être moyen de faire plus simple ou autre, mais j'ai surtout fait comme j'ai pu avec mes modestes connaissances .
Edit : J'ai fait la mise à jour sur mon site .
Auto-entrepreneur infographiste (créations graphiques, mises en page). Mon site Internet. Demandeuse d'emploi.
Tu obtient un timestamp négatif. Tu soustrait une valeur négative, ça revient à l'additionner. Tu as ton temps de vie. Le problème vient surtout si ton type est du 29 février. Enfin, ça peut se contourner, c'est juste 1 date ça va. Les années bissextiles sont divisibles par 4 ou 400 (exception à la règle suivante) mais pas par 100, sinon ça n'en est pas une. Le plus simple reste date("L").
merci pour vous tous.
mais Clicky ton code ça marche pas!
je veux une simple fonction qui me calcul l'age a partir de la date de naissance qu'on va récupérer de la base de donnée.
merci pour vous tous.
mais Clicky ton code ça marche pas!
je veux une simple fonction qui me calcul l'age a partir de la date de naissance qu'on va récupérer de la base de donnée.
Chez moi ça marche en tout cas, je récupère la date de naissance de ma base de données aussi.
Il y a juste à remplacer les données $_POST[] de mon code par celles obtenues de la bdd.
Par contre, dans ma table, j'ai une colonne par élément : une pour le jour de naissance, une autre pour le mois et une troisième pour l'année.
Il y a peut-être moyen de récupérer chacun de ces éléments séparément, à partir d'une seule donnée (avec un explode() je suppose), puis de mettre chaque élément dans leur variable respectives, et de s'en servir de la même façon que les $_POST[] ou $donnée_bdd[].
Ce n'est pas une simple petite fonction certes, mais je t'assure que ce code fonctionne, j'ai fait plein de tests concluants, en changeant la date de mon ordi plusieurs fois, en mettant une année bissextile, non bissextile, en mettant un jour avant et après le jour anniversaire, le mois de ce jour, le mois avant et celui d'après, etc. Il prend en compte les gens nés un 29 février d'une année bissextile pour lui afficher son nouvel âge le 28 Février si l'année courante ne l'est pas (pas de 29 Février).
'Fin bon, c'est toi qui vois hein .
Auto-entrepreneur infographiste (créations graphiques, mises en page). Mon site Internet. Demandeuse d'emploi.
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Auto-entrepreneur infographiste (créations graphiques, mises en page). Mon site Internet. Demandeuse d'emploi.
Auto-entrepreneur infographiste (créations graphiques, mises en page). Mon site Internet. Demandeuse d'emploi.
Auto-entrepreneur infographiste (créations graphiques, mises en page). Mon site Internet. Demandeuse d'emploi.