从PHP中获取未存储在mysql中的TOTAL值的排名

时间:2016-06-30 04:40:35

标签: php mysql ranking

美好的一天,我正在开发一个评分系统,该系统将显示所有用户的所有分数,并使用PHP中的MySQL进行总结。结果是正常工作和计算(计算使用php完成,而不是MySQL)。现在我的问题是,如何将总分从最高到最低排名。

以下是代码:

$sel_query="Select * from tbl_scores";
$result = mysql_query($sel_query);
while($row = mysql_fetch_array($result)) {
$crit_3 = $row["crit_3"];
$crit_3a = number_format($crit_3);

$crit2_3 = $row["crit2_3"];
$crit2_3a = number_format($crit2_3);

$crit3_3 = $row["crit3_3"];
$crit3_3a = number_format($crit3_3);

$user1 = ($crit_3) ;
$user2 = ($crit2_3);
$user3 = ($crit3_3);
$divide = ($user1 + $user2 + $user3); 
$total = number_format($divide / 9  , 2, '.', '');
$average = number_format($total * 0.15 , 2, '.', '');
?>

提前致谢。

1 个答案:

答案 0 :(得分:1)

1.请停止使用(不推荐使用php5.5 +从php7中删除)mysql_*,使用mysqli_*PDO

2.在循环外部定义一个数组变量,在循环内部为该数组分配总分数。

3.现在您将获得一系列分数,现在您可以使用rshort()方法正确获取数据。

所以代码应如下所示: -

$sel_query="Select * from tbl_scores";
$result = mysql_query($sel_query);
$scores_array = array();//create an array
while($row = mysql_fetch_array($result)) {
$crit_3 = $row["crit_3"];
$crit_3a = number_format($crit_3);

$crit2_3 = $row["crit2_3"];
$crit2_3a = number_format($crit2_3);

$crit3_3 = $row["crit3_3"];
$crit3_3a = number_format($crit3_3);

$user1 = ($crit_3) ;
$user2 = ($crit2_3);
$user3 = ($crit3_3);
$divide = ($user1 + $user2 + $user3); 
$total = number_format($divide / 9  , 2, '.', '');
$average = number_format($total * 0.15 , 2, '.', '');
$scores_array[$row['user_name']] = $total; // assign total to the array and i assume that your table has one column name user_name for each user, change accordingly
}
rsort($scores_array);// sort the array in decending order of total scores
foreach ($scores_array as $key=>$value){ // iterate through array
      echo $key.'has scored total score:-'.$value; //print the score along with username
}
?>

注意: - 请采用变量名称,使其不会产生任何歧义。