Tableau php avc calcul d'age Pti prb Svp!?
magma
-
jboi -
jboi -
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
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 ?
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 />";
A voir également:
- Tableau php avc calcul d'age Pti prb Svp!?
- Tableau word - Guide
- Tableau ascii - Guide
- Trier un tableau excel - Guide
- Tableau croisé dynamique - Guide
- Calcul moyenne excel - Guide
11 réponses
Merci Alex pour ta réponse mais je l'ai déja testé et ca me fait la meme chose!
Penses tu a autre chose? parce que je ne pense pas avoir fait d'erreur en soit dans mon code non ?
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 ?
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]; }
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...
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 !
Bonne chance à toi !
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() ?
leprobleme viendrait il de ma fonction get Age() ?
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 :)
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
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....
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....