Tableau php avc calcul d'age Pti prb Svp!?

Fermé
magma - 13 févr. 2008 à 15:56
 jboi - 10 avril 2008 à 22:11
Bonjour,

j'ai crée une base de données depuis la quelle je souhaite récupéré des données sur mes membre dans la table apellée "membre"
je récupère la date de naissance pour chaque femme dans un premier temps, je calcul son age par le biais d'une fonction getAge();
et ensuite je calcul l'age moyen des femmes membre du site

mon probleme est qu'apparament cela ne marche que s'il y a une seule femme enregistré dans la base de données. S'il y en a plus d'une (j'ai fait le test) je recois les messages d'erreur suivant
Notice: Undefined offset: 1 in c:\program files\easyphp1-8\www\des sites\magma\testage.php on line 40

cette ligne correspond a la lignejuste apres ma boucle while ou j'insère dans la variable $annee l'année de la date de naissance
quelqu'un peut il m'aider SVP ?

<?php
session_start();
header("Cache-control:private");
include_once("mysql.php"); include("function.php");

function getAge ($y, $m, $d) {
    return date('Y') - $y - (date('n') < (ltrim($m,'0') + (date('j') < ltrim($d,'0'))));
}


	$connect= connection(); // connection a la bd
	
	$sql = "SELECT count(*)
			FROM membre where sexe='F'";
	
	$req=requete ($sql,$connect);
	
	$nbfemme= mysql_fetch_array($req);
 	$f=$nbfemme[0];
	echo "nb femme inscrite=".$f."<br />";
	
		
	$req="select datenaiss from membre where sexe='F'";
	$ree=requete ($req,$connect);
	   
$i=0;
// on fait une boucle qui va faire un tour pour chaque enregistrement
while($daten = mysql_fetch_array($ree)) {

$annee=substr($daten[$i],0,4);
$mois=substr($daten[$i],-5,2);
$jour=substr($daten[$i],-2);
$age[$i]=getAge($annee,$mois,$jour);
$i++;
}


$agee=0;
for ($j=0;$j<$f;$j++){

$agee=$agee+$age[$j];
}
$agemoy=$agee/$f;
echo "agemoyen femme=".$agemoy."<br />";

11 réponses

Bonjour,

Test avec mysql_fetch_assoc !

Cordialement
0
Merci Alex pour ta réponse mais je l'ai déja testé et ca me fait la meme chose!
Notice: Undefined offset: 0

Penses tu a autre chose? parce que je ne pense pas avoir fait d'erreur en soit dans mon code non ?
0
Ha, je crois que j'ai trouvé, regarde bien ton code, tu n'est pas synchronisé, car ton $i commence a la valeur 0, alors que ton $j lui va commencer par la valeur 1.

$i=0;
// on fait une boucle qui va faire un tour pour chaque enregistrement
while($daten = mysql_fetch_array($ree)) {

$annee=substr($daten[$i],0,4);
$mois=substr($daten[$i],-5,2);
$jour=substr($daten[$i],-2);
$age[$i]=getAge($annee,$mois,$jour);
$i++; (a placer en début de boucle vu que tu incrémente ton for dés la première entrée)
}


$agee=0;
for ($j=0;$j<$f;$j++){

$agee=$agee+$age[$j];
}
0
malheuresement ca ne change rien j'ai toujour ce message notice undefined offset: 1 a chaque ligne ou je récupere l'année, le mois ou le jour...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Hum, le souci doit donc bien povenir de ta requête, vérifie le type de tes champs, qu'il soient bien en number et tente avec array et assoc, assure toi aussi du bon déroulement de ton code à l'aide d'echo successifs, cela te permettra de mieux cibler ton problème, là je ne vois pas !

Bonne chance à toi !
0
Merci quand meme, mais je suis bien sur que les champs et ma requête sont bonnes! j'ai fait des tests avec les echo successifs aussi et je me rend compte que des que la deuxieme valeur entrée dans le tableau $age[] est eronnée... au lieu d'etre a 18, elle est a 2008, la suivante aussi (j'ai inséré 3 femme dans ma Bd) la premiere est juste elle est a 28.
leprobleme viendrait il de ma fonction get Age() ?
0
Je pense que tu as oublié les $requete et/ou les $connexion. Sans ces deux paramètres, tu ne peux pas faire marché ton programme.
0
Si les valeurs avant traitement GetAge() sont correctes, et que cette même fonction ne renvoie pas le bon résultat, alors le problème vient certainement de ta fonction :)
0
Les femmes ne cesseront donc jamais de nous poser des colles ?! ^^
0
Mdrrrrrr!!!!! tu es trop fort Alex!

Alors en fait le probleme ne vient peut etre pas de ma fonction j'en ai utilisé une autre que j'ai récupéré par le net la voici
function calculAge($jour, $mois, $annee){

$unixDate = mktime(0, 0, 0, $mois, $jour, $annee);
UNIX, (1er janvier 1970 00:00:00 GMT). **/

$nowDate = time();

$ageUnix = $nowDate - $unixDate;
$age = floor($ageUnix / (365 * 24 * 60 * 60));
return $age;

}


et la le meme probleme se pose sauf que les valeurs du tableau $age[] changent. la premiere est toujorus a 28ans et les deux autres sont a 38....
0
en gros voila ce que ca donne
nb femme inscrite=6

i=0
age=28
i=1
age=38
i=2
age=38
i=3
age=38
i=4
age=38
i=5
age=38

agemoyen femme=36,333333333333


j'aimerai savoir pourquoi il met les autres valeurs a 38ans ???
0
c bon j'ai trouvé merci kan mm Alex !!! je savais que j'arriverai a bout des femmes ca me connait trop bien !
0