Pb Calcule de l age

Répondre
XTremTourist
le 30/08/2003 à 18:50
XTremTourist
et g un probleme pour calculer l age d une personne depuis sa date de naisance

<?php
function calculAge ($dateNaissance, $dateReference) {
$age = date("Y",$dateReference) - date("Y",$dateNaissance);
if( (mktime(0,0,0, date("n", $dateReference), date("j", $dateReference), date("Y", $dateReference)) - mktime(0,0,0, date("n", $dateNaissance), date("j", $dateNaissance), date("Y", $dateReference))) < 0 ) {
$age--;
}
return $age;
}

// exemple d'utilisation (cf. la fonction mktime pour plus de details) :

$naissance = mktime (20, 30, 00, 04, 20, 1969);
$reference = time();

// notez que time() retourne aussi un timestamp : le timestamp de l'instant present (en clair, là, on calcul l'age de la personne à l'instant présent)

$age = calculAge ($naissance, $reference);
echo $age;
?>


voila ce qui me retourne apret interpretation du code


Warning: mktime(): Windows does not support negative values for this function in H:\server\www\test\age_d_personne.php on line 12

Warning: date(): Windows does not support dates prior to midnight (00:00:00), January 1, 1970 in H:\server\www\test\age_d_personne.php on line 3

Warning: date(): Windows does not support dates prior to midnight (00:00:00), January 1, 1970 in H:\server\www\test\age_d_personne.php on line 4

Warning: date(): Windows does not support dates prior to midnight (00:00:00), January 1, 1970 in H:\server\www\test\age_d_personne.php on line 4
2003 << sa c le echo $age;

PD de windows enfait se serait pas windows mais lostdown
bisol
le 05/09/2003 à 14:07
bisol
Sauf erreur Windows est une daube avec la fonction mktime (Windows est une daube tout court :D).. Essaie avec Linux ca doit Rulez facile
Linux & PHP POWA
XTremTourist
le 05/09/2003 à 20:46
XTremTourist
nan mktime compte le temp depuis 1970 donc ce qui est enterrieur a cette date cose une erreur.
dsl j men suis rendu compte apret avoir poster
louaque
le 12/09/2003 à 15:15
louaque
SELECT
PERIOD_DIFF(DATE_FORMAT(NOW(), '%Y%m'), DATE_FORMAT('1983-01-11', '%Y%m'))/12;

Explication :

PERIOD_DIFF retourne le nombre de mois entre deux date au format YYYYmm ou YYmm

DATE_FORMAT permet de récuperer le bon format des dates "normales" pour PERIOD_DIFF

Et après on divise par 12 pour avoir le nombre d'année.
Attention, ce nombre n'est pas un entier.
On obtient 20.67

Il faut rajouter TRUNCATE(nombre, 0); pour obtenir l'entier sans arrondir.
Ca donnerais un truc du style :

SELECT TRUNCATE(
PERIOD_DIFF(DATE_FORMAT(NOW(), '%Y%m'), DATE_FORMAT('1983-01-11', '%Y%m'))/12, 0);
-> 20

Bien sur tu peux changer les dates par des variables php
XTremTourist
le 14/09/2003 à 12:31
XTremTourist
g pas encor essayer mais g un kestion deja :p il marche si le mec et nee avant 1970 ?
paske mon probleme c ke g un mec ki est nee avant 70 en 69 :S et sa me retourne un faut age !!
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours