Calcul d'un age en fonction d'une année

Résolu
Utilisateur anonyme - Modifié le 8 juin 2018 à 08:47
 Utilisateur anonyme - 15 juin 2018 à 05:24
Bonjour,

Je bute sur un problème (probablement tout simple et tout bon mais bon voila je suis une quiche en PHP).
J'aimerai calculer un age en fonction de l'année de naissance et l'intégrer dans un code que j'ai pris sur le net qui défini les anniversaires du mois en cours (c'est a dire qu'une table mysql est faite avec un champ "jour" et un champ "mois" et en fonction de ces données, j'ai une requête qui dit que telles personnes de ma base auront leurs anniversaires ce mois ci - en fait c'était un script que j'avais pris sur le net et que j'avais déjà modifié a ma façon avec des switch case ... le problème c'est que je n'arrive plus a retrouver le script original sur le net)

Bref j'ai créé un champ "annee" dans la table mysql
Au début du code php après le script de connexion à la base , j'ai défini l'année en cours par un

$annee_en_cours = date("Y");


Après la requête j'ai mis un

 if($nombre_lignes > 0 ){

while($data = mysqli_fetch_assoc($req)) {
{
$annee= $data['annee'];
}
}


et pour calcul le résultat j'ai mis un if / else

if($mois_en_cours<mois_de_naissance)
{
$age = $annee_en_cours - $annee_de_naissance - 1 ; //car anniversaire pas encore passé
}
else
{
$age = $annee_en_cours - $annee_de_naissance ; // car anniversaire atteint
}


Enfin pour afficher ce résultat j'ai mis le $age dans un echo (qui est composé d'un switch case du jour du naissance pour définir si le jour de naissance est ler1er du mois - pour ajouter le "er" au 1, si le jour est égal au jour d'anniversaire de la personne - dans ce cas je lui souhaite un joyeux anniversaire avec l'affichage d'un petit cadeau à coté et dans les autres cas le jour n'est pas encore atteint donc l'affichage est "le [numero du jour] ce sera l'anniversaire de telle personne, il a xx ans - donc le resultat'est année en cours - année de naissance - 1) et mon problème c'est qu'a l'affichage du résultat il affiche 2018 ou 2017 (il ne reconnait pas l'année de naissance de la personne, il ne reconnait que l'année en cours auquel il retranche 1 si le jour de naissance de la personne n'a pas encore été atteint mais s'il affiche 2017 ou 2018 c'est bien qu'il reconnait la variable age et la formule de calcul puisqu'il retranche 1 si le jour de naissance n'est pas atteint).

J'ai essayé en appelant le champ année de ma BDD dans ma requête - le $requete=select(" ....") et la les noms des personnes qui sont nées le mois en cours disparaissent complètement (php saute directement dans cas ou il n y ait pas d'anniversaire pour le mois en cours)


Si quelqu'un peut me dire pourquoi l'année de naissance n'est pas reconnue dans le résultat ce serait cool (et sans cette portion de code que j'ai ajoutée le code fonctionne parfaitement)

Merci
Michel
--
A voir également:

3 réponses

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
8 juin 2018 à 08:52
Bonjour,
Tu parles d'un champ "annee" dans ta bdd .... et ensuite dans ton code tu parles aussi du mois_de_naissance....
Ce champ existe dans ta bdd ??

Il serait bien de nous indiquer :
- La structure exacte de ta table ( nom des champs, type et exemple de contenu )
- Le code complet et non des lignes par ci par là.... histoire de voir comment tu l'as organisé réellement..

Penses aussi à faire des echo / print_r de tes variables pour savoir ce qu'elles contiennent réellement....

Sachant que pour calculer la différence entre deux dates, tu peux utiliser
date_default_timezone_set('Europe/Paris');

$today = date('Y-m-d');
$d1 = new DateTime('2000-01-01');
$d2 = new DateTime($today);
$diff = $d2->diff($d1);

$age = $diff->y;

echo "age : ".$age;

0