Tom's Guide > Forum > Programmation > Afficher l'âge avec l'année de naissance, selon les années bissextile

Afficher l'âge avec l'année de naissance, selon les années bissextile

Forum Programmation : Afficher l'âge avec l'année de naissance, selon les années bissextile

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

Bonsoir,

J'ai créé un petit code pour afficher l'âge d'une personne avec sa date de naissance (même si elle est née avant 1970).
Il affiche aussi le changement d'âge le jour anniversaire.
Je lui ai mis un système pour ceux qui sont nés un 29 février (pour le problème de l'année bissextile ou non). Le code tel qu'il est, marchant pour les dates de naissance n'étant pas concernées par ce problème, j'aimerais savoir si les if des parties "année bissextile" vous paraissent plausibles, Je ne peux pas les tester puisque le dernier jour de février n'est pas encore passé et que l'année actuelle est bissextile.

Voici mon code :


Code :
  1. <?php
  2. /*En supposant qu'un formulaire ait été rempli auparavant pour récupérer la date de naissance d'une personne, par champs séparés : jour, mois et année de naissance.*/
  3. if (isset($_POST['membre_jour_naiss']) && isset($_POST['membre_mois_naiss']) && isset($_POST['membre_annee_naiss']))
  4. {
  5.         //On définit le jour, mois et année actuels avec la fonction date() pour chacun d'eux.
  6.         $jour = date('d');
  7.         $mois = date('m');
  8.         $annee = date('Y');
  9.         $annee_bis = date('L');//Pour savoir si l'année actuelle est bissextile ou non. 1 si oui, 0 si non.
  10.         $jour_bis = 29;
  11.         $mois_bis = 02;
  12.         //On définit le jour, mois et année de naissance de la personne, obtenus à l'aide du formulaire.
  13.         $membre_jour_naiss = intval(htmlentities($_POST['membre_jour_naiss']));
  14.         $membre_mois_naiss = intval(htmlentities($_POST['membre_mois_naiss']));
  15.         $membre_annee_naiss = intval(htmlentities($_POST['membre_annee_naiss']));
  16.         //On affiche un message d'infos non précisées si au moins un des champs ou tous sont vides.
  17.         if (empty($_POST['membre_jour_naiss']) || empty($_POST['membre_mois_naiss']) || empty($_POST['membre_annee_naiss']))
  18.         {
  19.                 echo 'Âge : Infos non précisées.';
  20.         }
  21.         //On affiche l'âge du membre à  l'aide de la condition if.
  22.         elseif (($membre_annee_naiss < $annee) && ($jour >= $membre_jour_naiss) && ($mois >= $membre_mois_naiss))
  23.         {
  24.                 //Si l'année est bissextile, pour ceux qui sont nés un 29 février.
  25.                 if (($annee_bis == 1) && ($jour_bis == $membre_jour_naiss) && ($mois_bis == $membre_mois_naiss))
  26.                 {
  27.                         $age1 = $annee - $membre_annee_naiss;
  28.                         echo 'Âge : '.$age1.' ans.';
  29.                 }
  30.                 //Si l'année n'est pas bissextile, pour ceux qui sont nés un 29 février.
  31.                 elseif (($annee_bis == 0) && ($jour_bis == $membre_jour_naiss) && ($jour == (--$jour)) && ($mois_bis == $membre_mois_naiss))
  32.                 {
  33.                         $age1 = $annee - $membre_annee_naiss;
  34.                         echo 'Âge : '.$age1.' ans.';
  35.                 }
  36.                 //On a le cas ici, où l'anniversaire est passé.
  37.                 $age1 = $annee - $membre_annee_naiss;
  38.                 echo 'Âge : '.$age1.' ans.';
  39.         }
  40.         else
  41.         {
  42.                 //Si l'année est bissextile, pour ceux qui sont nés un 29 février.
  43.                 if (($annee_bis == 1) && ($jour_bis == $membre_jour_naiss) && ($mois_bis == $membre_mois_naiss))
  44.                 {
  45.                         //Ici, l'anniversaire n'est pas encore passé, l'incrémentation avant la variable $membre_annee_naiss est nécessaire.
  46.                         $age2 = $annee - (++$membre_annee_naiss);
  47.                         echo 'Âge : '.$age2.' ans.';
  48.                 }
  49.                 //Si l'année n'est pas bissextile, pour ceux qui sont nés un 29 février.
  50.                 elseif (($annee_bis == 0) && ($jour_bis == $membre_jour_naiss) && ($jour == (--$jour)) && ($mois_bis == $membre_mois_naiss))
  51.                 {
  52.                         $age2 = $annee - (++$membre_annee_naiss);
  53.                         echo 'Âge : '.$age2.' ans.';
  54.                 }
  55.                 $age2 = $annee - (++$membre_annee_naiss);
  56.                 echo 'Âge : '.$age2.' ans.';
  57.         }
  58. }
  59. ?>




Merci d'avance ;)

------------------------------ Clicky
Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

Je ne comprend pas pourquoi tu utilises cela :

($jour == (--$jour))


Message édité par loic m le 22-01-2008 à 00:34:48
Répondre à loic m

C'est pour préciser au script qu'il doit afficher l'âge d'une personne née un 29 février, mais le 28 dans les cas où l'année ne serait pas bissextile (c'est-à-dire, qui n'aurait que 28 jours).
Ce petit bout de code dit en fait : si le numéro du jour actuel est égale à lui-même moins 1 c'est-à-dire 29 - 1 (qui est donc égal à 28), on affiche l'âge de la personne puisque le script ne pourra pas l'afficher le lendemain (le 29) puisque le 29 n'existera pas ces années là. Février n'a 29 jours que tous les quatre ans.

merci :)

------------------------------ Clicky
Répondre à Clicky

Ben oui ok, mais ça ne me dit pas si mes conditions secondaires ont une chance de marcher ^^

Merci :)

------------------------------ Clicky
Répondre à Clicky

Normalement il n'y a pas de problème ... enfin je n'en ai pas vu !

Sinon je pensais à un truc ... Je ne sais pas si tu utilise en serveur local pour tes test mais si c'est le cas ne peux tu pas changer la date de ton pc pour faire les tests ? C'est une simple idée je ne sais pas si cela marche mais bon ... à voir !

Répondre à loic m

Pas de problèmes particuliers donc, ok ça marche, merci ;)

Je fais effectivement mes tests en local, et on m'a aussi conseillé de changer la date de l'ordi mais j'ai peur de ne pas savoir faire et encore plus de ne pas savoir remettre la bonne date après, mais c'est à voir en effet ;)

Merci beaucoup ! :)

------------------------------ Clicky
Répondre à Clicky

Pour changer la date de ton pc c'es vraiment très simple lol.... tu double clic sur l'heure en bas à droite ...

ensuite tu choisis ton mois et ton jour dans le calendrier ... pour revenir a la date de base tu fais l'inverse en selectionnant la vrai date. Tu en as pour 15 seconds et il n'y a pas de risque ;)

Répondre à loic m

Oui en effet, je viens d'essayer, c'est vraiment tout simple lol.

Merci pour tes réponses rapides en tout cas ;)

------------------------------ Clicky
Répondre à Clicky

Bon en fait je viens d'essayer en mettant la date de l'ordi un 28/02/2007 et mon code ne marche pas dans le cas où je précise ma date de naissance un 29/02, et en plus, les echos des conditions prinpales s'affichent avec ceux des secondaires.
Je vais réfléchir à un autre procédé :)

------------------------------ Clicky
Répondre à Clicky
Tom's Guide > Forum > Programmation > Afficher l'âge avec l'année de naissance, selon les années bissextile
Aller à :

Il y a 323 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens