Exemple de calcul d'age (années, mois et jours)

Soyez le premier à donner votre avis sur cette source.

Snippet vu 16 440 fois - Téléchargée 34 fois

Contenu du snippet

Voila un code trouvé sur un autre site que j'ai traduit pour CS. Vous pouvez calculer l'age d'une personne en Annees Mois Jours

Et en prime le script indique si vous pouvez ou non entrer dans l'armée ;-)

Source / Exemple :


<?php

//récupére la date du jour
$today = getdate();
$month = $today['month']; //le mois
$mday = $today['mday']; //le jour
$year = $today['year']; //l'année
$lyear = $year - 105;
?>

<html>
<head>
</head>
<body>
<h2>Calculer l'age</h2>
<h4>Ce script calcule votre age et vous dit si vous pouvez entrer dans l'armée</h4>
    <form method=post action=age.php name=age>
    <table>
    <tr>
    <td>Année de naissance</td>
    <td><input type=text name=byear></td>
    </tr>
    <tr>
    <td>Mois de naissance</td>
    <td><select name=bmonth><option value=>Choisir</option>
	    		<option value=1>Janviers&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp</option>
	    		<option value=2>Fevrier</option>
	    		<option value=3>Mars</option>
	    		<option value=4>Avril</option>
	    		<option value=5>Mai</option>
	    		<option value=6>Juin</option>
	    		<option value=7>Juillet</option>
	    		<option value=8>Aout</option>
	    		<option value=9>Septembre</option>
	    		<option value=10>Octobre</option>
	    		<option value=11>Novembre</option>
	    		<option value=12>Decembre</option>
	    		</select></td>
    </tr>
    <tr>
    <td>Jour de naissance</td>
    <td><input type=text name=bday></td>
    </tr>
    <tr>
    <td colspan=2><input type=submit name=send value=Submit></td>
    </tr>
    </table>
</form>

<?

//assign value to variables
if($send){
	if(($byear <= $year)&&($byear >= $lyear)){ //birth year validation
	if($bday != ""){
		$day_age  = $mday - $bday;
	}
	$mon_age = date("n") - $bmonth + 12;
	$year_age = $year - $byear;
	//echo "day age: $day_age<br>";

	//calculate year and month
	if($mon_age > 12){
		$mon_age = 1;
	}elseif($mon_age == 12){
		$mon_age = "";
	}else{
		$year_age = $year_age - 1;
	}

	//calculate month and day
	if($day_age < 0){
		$mon_age = $mon_age - 1;
		if(($bmonth == 1)||($bmonth == 5)||($bmonth == 7)||($bmonth == 8)||($bmonth == 10)||($bmonth == 12)){
			$day_age = $day_age + 31;
		}elseif(($bmonth == 3)||($bmonth == 4)||($bmonth == 6)||($bmonth == 9)||($bmonth == 11)){
			$day_age = $day_age + 30;
		}else{
			$day_age = $day_age + 28;
		}
	}

	//debugger
	//echo "from system: $year $month $mday<br>";
	//echo "from input: $byear $bmonth $bday<br>";
	//echo "from result: $year_age $mon_age $day_age<br>";
	//result
	if(($mon_age <> "")&&($day_age <> "")){
		echo "Vous avez " . $year_age . " ans " . $mon_age . " mois and " . $day_age . " jours ";
	}elseif($mon_age <> ""){
		echo "You avez " . $year_age . " ans " . $mon_age . " mois";
	}else{
		echo "You avez " . $year_age . " ans";
	}

	//some extra caption
	if($year_age < 5){
		echo "<br>Ca veut dire que vous etes trop jeune. Désolé";
	}elseif($year_age > 90){
		echo "<br>Ca veux dire que vous êtes trop vieux. Désolé";
	}else{
		echo "<br>Allez-y Soldat!";
	}
}else{
	echo "Entrée invalide : $byear";
}
}
?>

Conclusion :


Alors pour tous et bien bonne utilisation, ce code n'est pas de moi, je vous le livre parceque j'ai cherché cette fonction de calcul (Année, Mois, Jours)

Et pour GRenard je sais que cette source est inutile et pollue CodeS-SourceS mais j'ai eu envie de la poster au cas ou cela pourrait aider quelqu'un. Je sais contrairement a toi que je ne suis pas le meilleur programmeur du monde alors j'apporte une maigre contribution a CodeS-SourceS.

A voir également

Ajouter un commentaire

Commentaires

cs_GRenard
Messages postés
1663
Date d'inscription
lundi 16 septembre 2002
Statut
Membre
Dernière intervention
30 juillet 2008
1 -
Ah ouais c'est vrai... mais pour un floor /10 ca va pas changer grand chose :P surtout apres 1970 ...
cs_garfield90
Messages postés
389
Date d'inscription
lundi 7 juillet 2003
Statut
Webmaster
Dernière intervention
10 février 2009
-
Juste une chose GRenard, ton 365.25 est erroné mais sinon ton code est ok. N'oublie pas que les années bisextiles ne sont pas tout les 4 ans mais ce sont celles qui sont divisibles par 4, par 400 mais pas par 100.
(exemple 1900 n'était pas bisextile mais 2000 oui)
cs_GRenard
Messages postés
1663
Date d'inscription
lundi 16 septembre 2002
Statut
Membre
Dernière intervention
30 juillet 2008
1 -
jvais genre 1 fois par 2 mois sur planet... fac genre tas pas rapport ?
Magidev
Messages postés
250
Date d'inscription
mardi 24 octobre 2000
Statut
Membre
Dernière intervention
28 août 2009
-
C.Q.F.D. Lol

Tu devrait écrire tes commentaires en anglais, tu est moins arrogant sur Planet. mdr
cs_GRenard
Messages postés
1663
Date d'inscription
lundi 16 septembre 2002
Statut
Membre
Dernière intervention
30 juillet 2008
1 -
Good... continue à me blaster... félicitation ! c'est qui le plus enfantin dant tout ca ?
Tiens moi je vais poster une tite source en commentaire afin de ne pas la mettre en source parce que ya déjà plusieurs source qui le font ...
<?php
function trouver_age($naissance) {
$age_personne = date('U') - mktime(0,0,0,substr($naissance,4,2),substr($naissance,6,2),substr($naissance,0,4));
return floor($age_personne/(60*60*24*365.25)*10)/10;
}

echo trouver_age("19751114000000");
?>

Permet de trouver l'age d'une personne avec un timestamp yyyymmddhhiiss seulement 1970 et +

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.