Afficher l'âge d'une personne

K20
Eléphant du PHP | 303 Messages

08 sept. 2005, 12:07

Bonjour, voilà, j'ai fait un petit bout de code qui affiche l'age d'une personne en prenant en compte le jour, le mois et l'année en cours ...

Je stocke la date de naissance de la personne sous la forme 01/01/1987 (exemple) dans une base de donnée MySQL.

Voici le scirpt :
1ere forme :
// Date d'aujourd'hui
$jour = date("d",time());
$mois = date("m",time());
$annee = date("Y",time());
// Détermination de l'âge
$age = $row[age]; // j'ai récupéré avant les infos MySQL ;)
$age = explode("/", $age);
if ($jour >= $age[0] and $mois = $age[1] or $mois > $age[1])
		{
		$age = $annee - $age[2];
		}
else
		{
		$age = $annee - $age[2] - 1;
		}
2e forme :
$date = date("d/m/Y",time());
// Détermination de l'âge
$age = $row[age];  // j'ai récupéré avant les infos MySQL ;)
$age = explode("/", $age);
$date = explode("/", $date);
if ($date[0] >= $age[0] and $date[1] = $age[1] or $date[1] > $age[1])
		{
		$age = $date[2] - $age[2];
		}
else	
		{
		$age = $date[2] - $age[2] - 1;
		}
Quelle forme préférez-vous ?
Voilà, je voulais savoir si vous aviez pas un truc plus simple ?
Ou même si quelqu'un a fait quelque chose du même genre.

Eléphant du PHP | 493 Messages

11 sept. 2005, 11:00

Bonjour. Personnellement je préfère le 2ème script. Par contre quelquechose me chagrine. Je ne te dirais pas quoi pour te laisser trouver mais je te conseil de développer tes scripts avec TOUTES les erreurs de reportées !
Pour ce faire édite php.ini, cherche, trouve et remplace par :

Code : Tout sélectionner

error_reporting = E_ALL
Le problème te sautera directement aux yeux !
Tu peux aussi avoir recours à PHP :
error_reporting( E_ALL );

Eléphant du PHP | 199 Messages

11 sept. 2005, 11:10

Sinon tu créés 2 horodateur :
$age_en_seconde=mktime(/*date du jour*/)-time();
$age = $age_en_seconde/(3600*24*7*52);
Les 2 font la paire : coder ET commenter :wink:

K20
Eléphant du PHP | 303 Messages

11 sept. 2005, 16:56

Bonjour. Personnellement je préfère le 2ème script. Par contre quelquechose me chagrine. Je ne te dirais pas quoi pour te laisser trouver mais je te conseil de développer tes scripts avec TOUTES les erreurs de reportées !
Pour ce faire édite php.ini, cherche, trouve et remplace par :

Code : Tout sélectionner

error_reporting = E_ALL
Le problème te sautera directement aux yeux !
Tu peux aussi avoir recours à PHP :
error_reporting( E_ALL );
Heu, c'est quoi mon erreur ? :oops:

@ smarties : oui ça peut être intéressant !

Eléphant du PHP | 493 Messages

11 sept. 2005, 17:01

$row[age]
génère une notice. en effet, 'age' est interprété comme une constante. :arrow:
$row[ 'age' ]

ViPHP
pjl
ViPHP | 2119 Messages

11 sept. 2005, 17:41

Je stocke la date de naissance de la personne sous la forme 01/01/1987 (exemple) dans une base de donnée MySQL.
Le format de stockage de date est yyyy-mm-dd.