rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Résolu

[php/javascript][Date] Comment obtenir l'âge

Ju, le jeudi 5 janvier 2006 à 13:52:01
Bonjour a tous ,

Je suis en BTSig 2ème année développeur et je recherche une fonction. En effet, Je voudrais obtenir l'âge de quelqu'un en entrant sa date de naissance.

J'espère que vous pourrez m'aider.

Merci d'avance
Répondre à Ju  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
psaikopat, le jeudi 5 janvier 2006 à 14:03:32
Quel langage stp ?
"A game of Chess is like a sword fight !
You must think first, before your move..."
Répondre à psaikopat

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
JU, le jeudi 5 janvier 2006 à 14:09:10
en php ou javascript si possible
Répondre à JU

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
psaikopat, le jeudi 5 janvier 2006 à 14:12:58
Tes dates sont contenu dans une base de données ? "A game of Chess is like a sword fight !
You must think first, before your move..."
Répondre à psaikopat

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Ju, le jeudi 5 janvier 2006 à 14:14:22
Oui elles sont contenues dans une base de données
Répondre à Ju

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
psaikopat, le jeudi 5 janvier 2006 à 14:17:12
Alors il y a plusieurs solutions !
Soit tu calcul directement l'age en récupérant tes données...
Soit tu les calculs dans un script !

Dernière question est je te balance tout le script ! ^^

Quelle version de MySQL ?
MySQL 4.1 ???
"A game of Chess is like a sword fight !
You must think first, before your move..."
Répondre à psaikopat

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Ju, le jeudi 5 janvier 2006 à 14:20:28
Pour des problèmes de filtre URL je n'arrive pas a le savoir, tout ce que je peut te dire c'est qu'il est contenu dans la dernière version d'EasyPHP.
Maintenant le scriptttttt lol
Répondre à Ju

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
psaikopat, le jeudi 5 janvier 2006 à 14:26:45
loooooooolll

Hahaha !!!

Et voila maintenant le scriiiiiiiiiiiiiiipppppppptttttttttttt :

tadaaaaaaaaaaaaaaaaaa :

// 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 (doivent etre dans ce format jj/mm/aaaa )
$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; 
        }

Et la PAN tu affiche $age ! ^^ "A game of Chess is like a sword fight !
You must think first, before your move..."
Répondre à psaikopat

8


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
psaikopat, le jeudi 5 janvier 2006 à 14:31:30
C'est bon ?

"A game of Chess is like a sword fight !
You must think first, before your move..."
Répondre à psaikopat

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Ju, le jeudi 5 janvier 2006 à 15:01:09
yeahhhhh! lol
ça marche!!
Merci beaucoup!
Répondre à Ju

10


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
psaikopat, le jeudi 5 janvier 2006 à 15:03:32
Mais de rien ce fut un plaisir !!!

Hey dis moi c'est quoi BTSig 2ème année développeur ??

"A game of Chess is like a sword fight !
You must think first, before your move..."
Répondre à psaikopat

11


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Ju, le jeudi 5 janvier 2006 à 15:26:03
Je prépare un BTS (c'est en 2ans), ig c'est Informatique et Gestion et en 2eme année on choisi une spécialité c'ets soit réseau soit développeur é je suis en developpement.

Voila!
Répondre à Ju

12


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
psaikopat, le jeudi 5 janvier 2006 à 15:30:40
Ok ...

A la revoiyure ...
Je peu te demander ou tu fait ça ?
Je connais un JU qui fait ça !
"A game of Chess is like a sword fight !
You must think first, before your move..."
Répondre à psaikopat

13


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Ju, le jeudi 5 janvier 2006 à 15:37:53
A Grenoble
Répondre à Ju

14


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
psaikopat, le jeudi 5 janvier 2006 à 15:38:37
oK bin c'est pas toi ! ^^
Mais bon bonne chance pour ton BTS !

@+ "A game of Chess is like a sword fight !
You must think first, before your move..."
Répondre à psaikopat

15


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
fenix51, le mercredi 1 mars 2006 à 11:44:47
salut pour ma part j'utilise Postgresql plus de fonctionnalité que mysql
et je suis en format date année/mois/jour

voici mon code

function age($naiss)
{
list($annee, $mois, $jour) = split('[-.]', $naiss);
$today['mois'] = date('n');
$today['jour'] = date('j');
$today['annee'] = date('Y');
$annees = $today['annee'] - $annee;
if ($today['mois'] <= $mois)
{
if ($mois == $today['mois'])
{
if ($jour > $today['jour'])
$annees--;
}
else
{
$annees--;
}
}
return $annees;
}

voila je suis en bts ig aussi en deuxième année option developpeur mais sur reims moi :)
Répondre à fenix51

16


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Dr.SoFtNaF, le mercredi 25 juillet 2007 à 18:41:06
Bonjour
Je suis dans une école Des ingénieurs 3eme année Génie info système et Réseaux, au Maroc, et je vois que cette fonction de calcule d'age n'est pas éfficace, si on entre la date 5/10/1986 par exemple, et si on calcule manellement, normalement ça doit donné $age = 20;
par contre si on utilise votre fonction, ça va nous donné $age=21;
la solition c'est de savoir si l'année de naissance est Bissextile ou non, ban voilà mon code:
1ére page : "functions.php"
<?
/* --------------------------------------------------------------
     FONCTION EstBissextile POUR SAVOIR SI L'ANNEE EST BISSEXTILE
   -------------------------------------------------------------- */

function EstBissextile($annee) // RETOURNE 1 SI L'ANNEE EST BISSEXTILE
{
	if($annee%4 == 0 AND $annee%100 != 0 OR $annee%400 == 0)
		$bissextile = 1;
	else
		$bissextile = 0;
	
	return $bissextile;
}

/* --------------------------------------------------------------
     FONCTION PRINCIPALE (RETOUNE L'AGE)
   -------------------------------------------------------------- */

function AgeJours($jour,$mois,$annee) // RETOURNE L'AGE (ans/mois et en jours) EN UTILISANT LE JOUR/MOIS/ANNEE DE LA DATE DE NAISSANCE
{
	$age_en_jours = 0;
	
	$annee_actuelle = date('Y');
	$mois_actuel = date('m');
	$jour_actuel = date('j');
	$num_jour_actuel = date('z');
	
	$nbr_annees = $annee_actuelle - $annee;
	
	// On crée "timestamp_anniversaire" pour connaitre le numéro du jour de l'anniversaire
	if(EstBissextile($annee))
	{
		$timestamp_anniversaire = mktime(0, 0, 0, $mois, $jour, 1996); // 1996 est bissextile
		$nbr_jour_annee = 366;
	}
	else
	{
		$timestamp_anniversaire = mktime(0, 0, 0, $mois, $jour, 1997); // 1997 n'est pas bissextile
		$nbr_jours_annee = 365;
	}
		
	$num_jour_anniv = date('z',$timestamp_anniversaire); // Numéro du jour de la naissance
	
	if($mois > $mois_actuel) // On ne prend pas en compte l'année en cours
	{
		$nbr_annees--;
		
		if($jour > $jour_actuel) // Un mois en moins
			$nbr_mois = 12 - ($mois - $mois_actuel) - 1;
		else
			$nbr_mois = 12 - ($mois - $mois_actuel);
	}
	elseif($mois < $mois_actuel) // On prend en compte l'année actuelle
	{
		$nbr_mois = $mois_actuel - $mois;
		
		if($jour > $jour_actuel) // Un mois en moins
			$nbr_mois--;
	}
	elseif($mois == $mois_actuel) // On vérifie le jour du mois
	{
		if($jour > $jour_actuel) // On ne prend pas en compte l'année en cours
		{
			$nbr_annees--;
			$nbr_mois = 11;
		}
		else
			$nbr_mois = 0;
	}
	
	$age_en_jours += ($nbr_jours_annee - $num_jour_anniv + $num_jour_actuel)%$nbr_jours_annee;
	
	for($i = 0 ; $i < $nbr_annees ; $i++)
	{
		$annee_i = $annee+$i;
		if(EstBissextile($annee_i))
			$age_en_jours += 366;
		else
			$age_en_jours += 365;
	}
	
	$age = $nbr_annees.' ans et '.$nbr_mois.' mois ('.$age_en_jours.' jours)';
	
	return $age;
}

?>


2éme page: age.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>calcule age</title>
</head>

<body>
Saisissez Votre date de naissance:
<form method="GET">
	<select name="Jour" style="width: 56px">
		<option value="0" selected="">Jour</option>
		<?
			for ( $i = 1; $i<=31 ; $i++){
				echo '<option value="'.$i.'">'.$i.'</option>';
			}
		?>
		</select><select name="Mois" style="height: 23px">
		<option value="0" selected="">Mois</option>
		<option value="1">Janvier</option>
		<option value="2">Février</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">Août</option>
		<option value="9">Septembre</option>
		<option value="10">Octobre</option>
		<option value="11">Novembre</option>
		<option value="12">Décembre</option>
		</select><select name="Annee">
		<option value="0" selected="" >Année</option>
		<?
			$annee = date("Y");
			for ( $i = 1900; $i<=$annee; $i++){
				echo '<option value="'.$i.'">'.$i.'</option>';
			}
		?>
		</select> <button name="calculer">Calculer</button></form>
<?
include 'functions.php';
	if(isset($_GET['calculer'])){
	$age = AgeJours($_GET['Jour'],$_GET['Mois'],$_GET['Annee']);
	
	echo 'Votre age est : '.$age;
	} 	
?>
</body>
</html>

et si vous voulez afficher que l'age exemple
Votre age est : 20 ans, dans le fichier funtions.php, changer
$age = $nbr_annees.' ans et '.$nbr_mois.' mois ('.$age_en_jours.' jours)'; 
par
$age = $nbr_annees.' ans ';


Cordialement
Répondre à Dr.SoFtNaF

17


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Osheed, le mercredi 29 août 2007 à 14:47:29
Hello al
la solution de psaikopat et parfaite mais mon soucie c'est que sous mon my-sql les dates sont dans le format aaaa-mm-jj cmt puis-je faire

Merci pour toute vos réponse passé et futur
Configuration: Windows Vista
Firefox 2.0.0.6
Répondre à Osheed

18


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
WinkoBit, le samedi 15 septembre 2007 à 22:18:37
comment tu stocke la variable de la date sur mysql ?
Répondre à WinkoBit

19


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Dr.SoFtNaF, le mardi 18 septembre 2007 à 01:41:01
Voici la partie de mon code source, comment j'obtiens l'age et comment je stock les variables dans la base de donnée MYSQL

<td style="height: 27px; width: 135px;">Date Naissance</td>
      <td style="height: 27px"><select name="Jour" style="width: 56px">
		<option value="0" selected="">Jour</option>
		<?
			for ( $i = 1; $i<=31 ; $i++){
				echo '<option value="'.$i.'">'.$i.'</option>';
			}
		?>
				
		</select> /<select name="Mois" style="height: 23px">
		<option value="0" selected="">Mois</option>
		<option value="1">Janvier</option>
		<option value="2">Février</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">Août</option>
		<option value="9">Septembre</option>
		<option value="10">Octobre</option>
		<option value="11">Novembre</option>
		<option value="12">Décembre</option>


		</select> /<select name="Annee">
		<option value="0" selected="" >Année</option>
		<?
			$annee = date("Y");
			for ( $i = 1980; $i<=$annee; $i++){
				echo '<option value="'.$i.'">'.$i.'</option>';
			}
		?>

		</select></td>


et dans le calcule j'insere la fontion
include '../includes/fonctions.php';
qui contient la fonction ci-dessus de calcule d'age
et par la suite je récupere en même temps les valeurs du combo box, et je les applique comme celà:
$age = AgeJours($_POST['Jour'],$_POST['Mois'],$_POST['Annee']);
et je stock la date de naissance dans la base de donnée comme celà
$naisance = $_POST['Jour']."/".$_POST['Mois']."/".$_POST['Annee'];


et si on a déjà des valeurs stocké dans la base de donnée, on fé commen ça
//des valeurs obtenus de la base de donnée
connexion;
$sql = "select `date` from `Membre` where `membre_id` = '5'"; // juste exemple
$result = mysql_query($sql)
while($row = mysql_fetch_array($result)) 
$DateNaissance = $row[0];//prendre le premier parametre de la requete sql, les parametre requete sql commence par 0,1,2..
//exemple:
$DateNaissance = "17-11-1985"; // date de mon naissance :d
$date = explode("-", $DateNaissance);
//on va avoir trois variable, par ce que la fonction explode return un tableau à ce qu'on a voulu limiter
echo $date[0];    // il nous affichera 17
echo $date[1];    // il nous affichera 11
echo $date[2];    // il nous affichera 1985

// ou bien

$Date($Jour,$Mois,$Annee) = explode("-", $DateNaissance);
echo $Jour;    // il nous affichera 17
echo $Mois;    // il nous affichera 11
echo $Annee;    // il nous affichera 1985
//et on l'applique dans notre fonction comme ça
$age = AgeJours($date[0],$date[1],$date[2]);

//et là si on affiche $age
echo "Votre age est: ".$age." ans"; //      Votre age est 21 ans



A retenir

la fonction explode retourne un tableau de chaînes. Ce sont les sous-chaînes extraites de string, en utilisant le séparateur delimiter. Si limit est fourni, le tableau retourné aura un maximum de limit éléments, et le dernier élément du tableau contiendra le reste de la chaîne string.

et autre limite de la fonction explode :

$str = 'un|deux|trois|quatre';

// limite positive
print_r(explode('|', $str, 2));

// limite négative (depuis PHP 5.1)
print_r(explode('|', $str, -1));


et si on a ce genre de conrie

$string = "";
$numbers = explode(",", $string); 


echo $numbers; // va nous afficher que ""

Enjoy, et si vous voulez autres choses, n'hésitez pas à poster ;)

Dr.SoFtNaF
Répondre à Dr.SoFtNaF

20


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
-=Y@h0o=-webmaster, le jeudi 20 septembre 2007 à 18:31:28
s'cusez moi de vous embétez, mais y'en a qui ont pas dû lire le manuel PHP ;-)
$est_bissextile = date('L',mktime(0, 0, 0, 0, 0, 2000));

retourne true ou false. C'est pas bien compliqué, mais ca a l'inconvéniant de ne pas pouvoir se traduire en JS contrairement à la fonction de Dr.SoFtNaF, qui devient tout bêtement :
function estBissextile(annee){
	if(annee%4 == 0 && annee%100 != 0 || annee%400 == 0){
		bissextile = true;
	}else{
		bissextile = false;
	}
	return bissextile;
}

Au passage, Dr.SoFtNaF est-ce qu'il n'est pas mieux d'utiliser les booléens plutôt que leurs valeures décimales (0,1) ? Je me pose la question car si tu as mis 0/1 c'est que tu dois avoir une raison (a moins que ca ne soit pour économiser 7 caractères ;-) )
Répondre à -=Y@h0o=-webmaster

21


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Dr.SoFtNaF, le vendredi 21 septembre 2007 à 01:46:52
Bonsoir encore une autre fois,
ban je te remercie Mr.Yahoo(-=Y@h0o=-webmaster) :d pour la remarque,
bonne utilisation de mktime, mais ce n'est pas pour notre cas voilà une signification de mktime:

mktime() est pratique pour faire des calculs de dates et des validations, car elle va automatiquement corriger les valeurs invalides. Par exemple, toutes les lignes suivantes vont retourner la même date : "Jan-01-1998".

<?php
echo date("M-d-Y", mktime(0, 0, 0, 12, 32, 1997));         // Jan-1-1998
echo date("M-d-Y", mktime(0, 0, 0, 13, 1, 1997));          // Jan-1-1998
echo date("d-Y", mktime(0, 0, 0, 1, 1, 1998));                // 1-1998
echo date("Y", mktime(0, 0, 0, 1, 1, 98));                       // 1998 : on peut la remplacer à la place de $annee;
?> 


Donc pour moi, quand j'utilise les variables, et surtout au php, je cherche pas à compliqué les choses, j'utilise les O/1 c'est par ce qu'ils sont facile et compréhensible, et dans le Mr. PHP, on ne peut pas spécifier l'utilisation des varriables, comme je peux mettre
$varriable = true ou false;
$varriable = 1 ou 0;
comm je peux mettre $varriable = NULL ou " ";
je vais pas répondre comme l'utilsiation de certain variable soit en C/C++/C# ou Java pour dire ça prend de l'espace en mémoire, de 0/1 just 1 bit de 8 octets, mais on php c autre chose, le $ il s'occupe de la convertition de la valeur,
donc j'ai utilisé 0/1 au hasard, et même tu peux utiliser true ou false, c'est la même chose ou même tu peux définir la variable sur
$est_bissextile = "oui";
et tu testes sur oui ou non, if($est_bissextile == "oui")...
en php on peut choisir ce qu'on veut, là où en veut, et quand on veut, ;)

Dr.SoFtNaF
Répondre à Dr.SoFtNaF

22


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
junglist, le dimanche 21 octobre 2007 à 20:32:43
Bonjour, j'ai vu 1 site internet qui affiche en tps réel des tas de données mondiales telles les naissances, les décès; il est possible de savoir en n'entrant que son age de l'obtenir en heures-min-sec. Il semblerait qu'il utilise 1 des formules dont vous parlez sur ce chat merci par avance...si vous connaissez ?!?

Par ailleurs je cherche à formater ma clé usb mais le démarrage de l'action est grisé donc non accessible! qui porrait m'aider?
Répondre à junglist

23


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
programm, le dimanche 21 octobre 2007 à 21:00:18
Bonsoir tout le monde
SVP, je cherche à comment enregistrer une image dans une base Apache (EasyPHP v4)
Merci
Répondre à programm

24


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
pascal, le jeudi 1 novembre 2007 à 02:24:57
bonjour,
mise à part la doc PHP :-) il est inutile et coûteux de faire une évaluation si une expression renvoie un booléen.
Ceci est plus court et donne le même résultat :

function EstBissextile($annee) // RETOURNE 1 SI L'ANNEE EST BISSEXTILE
{
return ($annee%4 == 0 && $annee%100 != 0 || $annee%400 == 0);
}
Pascal
Répondre à pascal

25


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
achille, le mercredi 23 janvier 2008 à 16:19:39
bonjouur!
je suis en premiere année de bts ig acctuellement je suis en cours je travail sur php la prof nous a donne un exo c de prendre toute la liste des eleve avec leur nom et prenom et a laide dun calcul on doi trouver leurs age et ca jarrive pas je vous montre mon programme et svp envoyer moi la bonne solution merci davance

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title>Exercice 6</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

</head>
<body>
<center>
<h2>2004-2005 TSIG1B</h2>


<?php
$tab = file("tsig1b.txt");
?>

<table border = "2px solid black">
<tr>
<td>Nom</td> <td>Prénom</td> <td>Date de Naissance</td><td>Age</td>
</tr>

<?php


for ($i = 0; $i < count($tab); $i++){

$ligne = explode(";",$tab[$i]);
echo "<tr>";
for ($j = 0; $j < count($ligne); $j++) {
echo "<td>$ligne[$j]</td>";
}
echo "<td></td>";
echo "</tr>";
}


?>


</table>






</center>
</body>
</html>
Répondre à achille

26


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 Dr.SoFtNaF, le mercredi 23 janvier 2008 à 23:20:53
bonsoir

est ce que tu veux récuperer les date de naissance de tous les étudiants d'un fichier text ou une base de donnée?

Cordialement


Dr.SoFtNaF
Répondre à Dr.SoFtNaF