Bonsoir à tous.

Je développe une petit application intranet sous codeigniter qui me permet de gérer (encore chose) les "personnes" enregistrés dans la base de données Mysql.

J'aimerais réussir à obtenir leur l'âge en Année mois jour avec un peu plus de précision que je ne l'ai avec le code sous-jacent.

Mais encore, encore, encore une fois, je n'arrive à percevoir comment faire... le but étant de prendre en compte les années bissextiles afin d'affiner le résultat. Je vu ici et là, l'utilisation de l'expando mais je suis un peu largué...

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public function get_age($idpat)
    {
        // Années
        $query = $this->db->query('SELECT TIMESTAMPDIFF(YEAR, date_age, NOW()) as annee FROM personnes WHERE id ="'.$id.'" ');
            foreach($query->result() as $row)
            {
               $nb_annee = $row->annee;
            }
            $annee = $nb_annee == 0 ? '' : ($nb_annee > 1 ? $nb_annee.' Ans ' : $nb_annee.' An ');
 
        // Mois    
        $query = $this->db->query('SELECT TIMESTAMPDIFF(MONTH, date_age, NOW()) as mois FROM personnes WHERE id ="'.$id.'" ');
            foreach($query->result() as $row)
            {
               $nb_mois = $row->mois;
            }
            $nb_mois = $nb_mois - ($nb_annee*12);
            $mois = $nb_mois == 0 ? '' : $nb_mois.' Mois ';
 
        // Jours
        $query = $this->db->query('SELECT TIMESTAMPDIFF(DAY, date_age, NOW()) as jour FROM personnes WHERE id ="'.$id.'" ');
            foreach($query->result() as $row)
            {
               $nb_jour = $row->jour;
            }
            $nb_jour = $nb_jour - ($nb_annee*365 + $nb_mois*31);
            $jour = $nb_jour == 0 ? '' : ($nb_jour > 1 ? ' '.$nb_jour.' Jours. ' : ' '.$nb_jour.' Jour.');
 
        $age = $annee.$mois.$jour;
 
        echo  $age;
    }
Ex.: Mr ZOZO Test ...........Age : 36ans 3mois et 2jours.