Partage
  • Partager sur Facebook
  • Partager sur Twitter

Calcul de l'age

Sujet résolu
    9 janvier 2006 à 16:52:39

    Bonjour tout le monde.
    En fait je suis à la recherche d'un petit script permettant, à partir d'une date de naissance, de calculer l'age (au format "xx ans et xx mois").
    J'ai bien pensé au timestamp mais le fait que l'on ne puisse pas aller avant 1970 me pose problème. Alors si quelqu'un avait une petite solution !!!
    Merci d'avance ;)
    • Partager sur Facebook
    • Partager sur Twitter
      9 janvier 2006 à 16:55:23

      L'utilisateur entre sa date de naissance sur ton site ?

      Il te suffit alors de setter une variable prennant la valeur de l'année courant et de la soustriare à l'année de naissance.
      Fais attention à ceux nés en début de mois et ceux en fin ;)
      • Partager sur Facebook
      • Partager sur Twitter
        9 janvier 2006 à 17:03:14

        Jusque là pas de problème sauf que je voudrais avoir l'age avec les mois en plus du nombre d'année. Du style 54 ans et 8 mois...
        Merci pour ta réponse...
        • Partager sur Facebook
        • Partager sur Twitter
          9 janvier 2006 à 17:05:55

          Alors tu vérifies si le mois de naissance est déjà passé par rapport au mois courant si tel n'est pas le cas, tu enleves un an et tu affiches le nombre de mois. Puis tu fais la même chose avec les jours et si c'est pas encore passé tu enleves au mois et au final tu affiches la différence des jours.

          Ai-je été clair :p ?
          • Partager sur Facebook
          • Partager sur Twitter
            9 janvier 2006 à 17:12:39

            dans la théorie ton message m'est très clair... Dans la pratique beaucoup moins :-° . Je vais quand même essayer de potasser ça o_O . Je te remercie.
            • Partager sur Facebook
            • Partager sur Twitter
              10 janvier 2006 à 19:41:35

              Salut !

              Je crois que je t'ai tout fait (même les années bissextiles !), mais sans commentaire :

              <?php
              if (isset($_POST['jour']) and isset($_POST['mois']) and isset($_POST['an']))
              {
                      switch ($_POST['mois']%2)
                      {
                              case 0:
                              if ($_POST['mois']==2)
                              {
                                      if ($_POST['an']%4==0)
                                      {
                                              if ($_POST['jour']>29)
                                              {
                                                      $jour=29;
                                              }
                                      }
                                      else
                                      {
                                              if ($_POST['jour']>28)
                                              {
                                                      $jour=28;
                                              }
                                      }
                              }
                              else if ($_POST['jour']>30)
                              {
                                      $jour=30;
                              }
                              else
                              {
                                      $jour=$_POST['jour'];
                              }
                              break;
                             
                              case 1:
                              $jour=$_POST['jour'];
                              break;
                             
                              default:
                              $jour=$_POST['jour'];
                      }
                      if (mktime(0,0,0,$_POST['mois'],$jour,$_POST['an'])<time())
                      {
                              if ($_POST['mois']==date('m'))
                              {
                                      if ($jour<=date('d'))
                                      {
                                              $age=date('Y')-$_POST['an'];
                                      }
                                      else
                                      {
                                              $age=date('Y')-$_POST['an']-1;
                                      }
                              }
                              else if ($_POST['mois']<date('m'))
                              {
                                      $age=date('Y')-$_POST['an'];
                              }
                              else
                              {
                                      $age=date('Y')-$_POST['an']-1;
                              }
                              echo '<p>Votre date de naissance est le '.$jour.'/'.$_POST['mois'].'/'.$_POST['an'].'.<br/>Vous avez '.$age.' ans.</p>';
                      }
                      else
                      {
                              echo 'Corrigez cette date.';
                      }
              }
              ?>

              <form method="post">
              <select name="jour">
              <?php
              for ($i=1;$i<=31;$i++)
              {
                      echo '<option value="'.$i.'"';
                      if ($i==date('d'))
                      {
                      echo ' selected="selected"';
                      }
                      echo '>'.$i.'</option>
                      '
              ;
              }
              ?>
              </select>
              <select name="mois">
              <?php
              $mois=array('','Janvier','F&eacute;vrier','Mars','Avril','Mai','Juin','Juillet','Ao&ucirc;t','Septembre','Octobre','Novembre','D&eacute;cembre');
              for ($i=1;$i<=12;$i++)
              {
                      echo '<option value="'.$i.'"';
                      if ($i==date('m'))
                      {
                      echo ' selected="selected"';
                      }
                      echo '>'.$mois[$i].'</option>
                      '
              ;
              }
              ?>
              </select>
              <select name="an">

              <?php
              for ($i=1901;$i<=date('Y');$i++)
              {
                      echo '<option value="'.$i.'"';
                      if ($i==date('Y'))
                      {
                      echo ' selected="selected"';
                      }
                      echo '>'.$i.'</option>
                      '
              ;
              }
              ?>
              </select>
              <input type="submit" value="Envoyer"/>
              </form>


              Si jamais j'avais oublié quelque chose, signalez-le moi !

              EDIT : bout de code concernant les années bissextiles simplifié.
              • Partager sur Facebook
              • Partager sur Twitter
                11 janvier 2006 à 9:12:43

                Super, je te remercie. je vais tester ça tout de suite...
                Merci !!! :D
                • Partager sur Facebook
                • Partager sur Twitter
                  12 janvier 2006 à 9:20:44

                  Voilà ce que j'ai fait...
                  C'est un peu plus court et ça me suffit. Si quelqu'un a des remarques...


                  $anneeact = date("Y");
                  $moisact = date("m");
                  $anneenaiss = $_POST['anneenaiss'];
                  $moisnaiss = $_POST['moisnaiss'];

                  if ($moisact >= $moisnaiss){
                          $anneeage = $anneeact - $anneenaiss;
                          $moisage = $moisact - $moisnaiss;
                  }
                  elseif ($moisact <= $moisnaiss){
                          $anneeage = $anneeact - $anneenaiss - 1;
                          $moisage = 12 - $moisnaiss + 1;
                  }
                  $age = $anneeage . "," . $moisage;

                  Voilà...
                  Merci à toi Danny402 j'ai bien testé ton code mais l'age retourné ne me donne pas le nombre de mois... Ou alors j'ai oublié un truc ! :-°
                  Merci encore :)
                  • Partager sur Facebook
                  • Partager sur Twitter
                    12 janvier 2006 à 10:47:30

                    Déjà, il y a qqch de pas logique vu que dans le cas où les deux mois sont égaux, tu dois faire plusieurs choses de contraires o_O

                    Sinon, autre chose, tu n'as pas besoin d'un elseif vu que si c'est pas l'un c'est d'office l'autre, donc else tout court reéduit le nombre de calcul de dcondition ;)

                    et pour le code:
                    if ($moisact < $moisnaiss) // si son annif est pas encore passé cette année
                    {
                       $anneeage = $anneeact - $anneenaiss - 1;
                       $moisage = $moisnaiss - $moisact;
                    }
                    elseif ($moisact > $moisnaiss) // si son annif est déjà passé
                    {
                       $anneeage = $anneeact - $anneenaiss;
                       $moisage = $moisact - $moisnaiss;
                    }
                    else // si son annif a lieu le mois actuel
                    {
                       $anneeage = $anneeact - $anneenaiss;
                       $moisage = 0;
                    }


                    Voilà, essaie avec ça et dis nous le résultat et si ça va pas donne nous le résultat que ça donne :p

                    • Partager sur Facebook
                    • Partager sur Twitter
                      13 janvier 2006 à 8:50:51

                      Super, merci pour tout... Je viens de tester ça et c'est tout à fait ce que je voulais...
                      Ton code me va, je l'adopte ! :D
                      C'est vraiment cool de votre part de prendre "quelques minutes" (ou plus :p ) pour éclairer les lanternes de certains !!!
                      Encore merci
                      • Partager sur Facebook
                      • Partager sur Twitter
                        13 janvier 2006 à 18:39:17

                        Citation : aulo

                        Super, merci pour tout
                        Je viens de tester ça et c'est tout à fait ce que je voulais...
                        Ton code me va, je l'adopte ! :D


                        De rien :p
                        • Partager sur Facebook
                        • Partager sur Twitter

                        Calcul de l'age

                        × 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.
                        • Editeur
                        • Markdown