Aller au contenu

Classement dans l'ordre et somme


Sujets conseillés

Posté

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_S
l7,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.

Posté

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.

Posté (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_S
el7,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_S
l7,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é par Boo2M0rs0

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...