Didier M Posté 30 Juin 2005 Posté 30 Juin 2005 Bonjour, Voilà, j'ai un problème, je n'arrive pas à aditionner le résultats d'un tableau !!!! Ne voulant aditionner que les 3 meilleurs valeurs de points. Ci- dessous mon code : $req = mysql_query("SELECT points_Sel1,points_Sel2,points_Sel3,points_Sel4,points_Sel5,points_Sel6,points_Sl7,points_Sel8 from 2005 where Dossards = '121'") or die ('Erreur SQL 3!'.$req.'<br>'.mysql_error()); $res1= mysql_numrows($req); for ($k=0;$k<$res1;$k++){ $points1=mysql_result($req,$k,"points_Sel1"); $points2=mysql_result($req,$k,"points_Sel2"); $points3=mysql_result($req,$k,"points_Sel3"); $points4=mysql_result($req,$k,"points_Sel4"); $points5=mysql_result($req,$k,"points_Sel5"); $points6=mysql_result($req,$k,"points_Sel6"); $points7=mysql_result($req,$k,"points_Sel7"); $points8=mysql_result($req,$k,"points_Sel8"); }$points = array("$points1", "$points2", "$points3", "$points4","$points5","$points6","$points7","$points8"); rsort ($points); reset ($points); while (list ($key, $val) = each ($points)) { echo "points[".$key."] = ".$val."<br>\n"; }$a=each($points);$s1=$a[1];$s2=$a[3];$s3=$a[5];$somme = array($s1,$s2,$s3);echo "sum(a) = " . array_sum($somme) . "<br>\n"; Merci.
Compte supprimé Posté 30 Juin 2005 Posté 30 Juin 2005 1/ Tu selectionne dans ta base par valeurs DESC 2/ Quand tu rempli ton tableau, tu n'ajoute que les 3 premiers champs.
MarvinLeRouge Posté 1 Juillet 2005 Posté 1 Juillet 2005 Salut, Tu veux quoi précisément ? Les 3 meilleures sommes de points_sel1 à points_sel8 ? Autre chose ? Donne un exemple concret, histoire qu'on soit sûr de bien se comprendre.
Boo2M0rs0 Posté 1 Juillet 2005 Posté 1 Juillet 2005 (modifié) Bonjour, il me parait très bizarre ton code :s $req = mysql_query("SELECT points_Sel1,points_Sel2,points_Sel3,points_Sel4,points_Sel5,points_Sel6,points_Sel7,points_Sel8 from 2005 where Dossards = '121'") or die ('Erreur SQL 3!'.$req.'<br>'.mysql_error()); $res1= mysql_numrows($req); for ($k=0;$k<$res1;$k++){ $points1=mysql_result($req,$k,"points_Sel1"); $points2=mysql_result($req,$k,"points_Sel2"); $points3=mysql_result($req,$k,"points_Sel3"); $points4=mysql_result($req,$k,"points_Sel4"); $points5=mysql_result($req,$k,"points_Sel5"); $points6=mysql_result($req,$k,"points_Sel6"); $points7=mysql_result($req,$k,"points_Sel7"); $points8=mysql_result($req,$k,"points_Sel8"); } La boucle for parcours toutes les lignes du résultat de la requête et attribue les valeurs à chaque variables, seulement à chaque fois, la variable précédente est écrasée sans que tu t'en ais servi. Si tu as du code à executer pour chaque résultat, tu devrai le placer juste apres:$points8=mysql_result($req,$k,"points_Sel8");. Mais en voyant la clause Where Dossards = '121' j'ai l'impression que ta requête sql ne doit renvoyer qu'un seul résultat donc le for est inutile :s Personellement j'aurais fait comme ça: <?php$req = "SELECT points_Sel1,points_Sel2,points_Sel3,points_Sel4,points_Sel5,points_Sel6,points_Sl7,points_Sel8 from 2005 where Dossards = '121'";$sql = mysql_query($req) or die ('Erreur SQL 3!'.$req.'<br>'.mysql_error());$row = mysql_fetch_row($sql);if( $row == false) die('Aucun enregistrement trouvé');else{ $max1 = max($row); //prend la meilleur valeur du tableau unset($row[array_search($max1, $row)]); //l'efface du tableau $max2 = max($row); //prend la meilleur valeur du tableau exepté celle effacée juste avant unset($row[array_search($max2, $row)]); $max3 = max($row); unset($row[array_search($max3, $row)]); //Les trois meilleurs valeurs: $meilleurs = $max1 + $max2 + $max3;}?> Modifié 1 Juillet 2005 par Boo2M0rs0
kjbstar Posté 1 Juillet 2005 Posté 1 Juillet 2005 Yep le code de Boo2M0rs0 devrait fonctionner comme ca
Didier M Posté 2 Juillet 2005 Auteur Posté 2 Juillet 2005 Bonjour, Le code de Boo2M0rs0 me parait super, je l'essaie tout de suite et encore merci. Didier.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant