Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/08/2011, 22h20   #1
Futur Membre du Club
 
Inscription : octobre 2006
Messages : 107
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 107
Points : 17
Points : 17
Par défaut Date de naissance sous la forme xAns yMois et zJours

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 :
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.
krislec est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2011, 10h48   #2
Invité régulier
 
Femme
Inscription : mai 2011
Messages : 4
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations forums :
Inscription : mai 2011
Messages : 4
Points : 5
Points : 5
Par défaut Tu peux faire plus simple

Je pense que tu peux faire beaucoup plus simple.

Utilises la fonction date de php (doc : http://php.net/manual/fr/function.date.php).

Après pour ton calcul, il s'agit juste d'une différence.

Tiens nous au courant, si ton problème persiste
Tchii est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2011, 11h02   #3
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Bonjour krislec,
et bienvenu au Club des "Constructeurs d'Usines à Gaz" !!

Dans la série "pourquoi faire simple quand on peut faire compliqué" :
-> 3 requêtes,
-> 3 boucles foreach (alors qu'il n'y a qu'un seul résultat)
C'est pas mal !

Je pense aussi comme Tchii (et pas Ch'ti, comme moi !) qu'il y a beaucoup plus simple ...
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2011, 18h29   #4
Futur Membre du Club
 
Inscription : octobre 2006
Messages : 107
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 107
Points : 17
Points : 17
Je crois que ça se voit que je ne suis pas programmeur, non ?

Pour le reste j'y travaille...

"To be continued..."
krislec est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h32.


 
 
 
 
Partenaires

Hébergement Web