从 PHP 中获取未存储在 mysql 中的 TOTAL 值的排名
Get the ranking of the TOTAL values from PHP that is not stored in mysql
美好的一天,我正在研究一些评分系统,该系统将显示所有用户的所有分数,并使用 MySQL
中的 PHP
对其进行总结。结果工作正常,计算也很好(计算是用 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.Please 停止使用(从 php5.5 中弃用 + 从 php7 中删除)mysql_*
,使用 mysqli_*
或 PDO
。
2.Define 循环外的数组变量,循环内将总分分配给该数组。
3.Now你会得到一个分数数组,现在你可以使用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
}
?>
注意:- 请以不会产生任何歧义的方式取变量名。
美好的一天,我正在研究一些评分系统,该系统将显示所有用户的所有分数,并使用 MySQL
中的 PHP
对其进行总结。结果工作正常,计算也很好(计算是用 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.Please 停止使用(从 php5.5 中弃用 + 从 php7 中删除)mysql_*
,使用 mysqli_*
或 PDO
。
2.Define 循环外的数组变量,循环内将总分分配给该数组。
3.Now你会得到一个分数数组,现在你可以使用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
}
?>
注意:- 请以不会产生任何歧义的方式取变量名。