在php

时间:2017-05-15 17:10:03

标签: php mysql

HY,

我正在做一些学校项目,我希望我能得到正确的答案,事情是我试图对一个班级学生进行排名,但是如果有两个学生得分相同的结果,那么它就赢了。给他们相同的排名,我希望它给他们相同的排名,并跳到下一个排名再次进入处理。

<?php $result = mysql_query("SELECT * FROM score ORDER BY AVERAGE");
$rank= 0; while($go = mysql_fetch_array($result)){$miki = ++$rank;
$sql = mysql_query("INSERT INTO rank(student_id,avg,rank) VALUES('$go['student_id']','$go['avg']','$miki')"); } ?>

它有效,它排名但如果两个学生的平均成绩相同,则不会对它们进行排名相同。

1 个答案:

答案 0 :(得分:0)

你想要缓存最新一次运行及其排名的平均值,试试这个:

<?php $result = mysql_query("SELECT * FROM score ORDER BY AVERAGE");
$rank=0; 
$cache_average=null;
$cache_rank=0;

while($go = mysql_fetch_array($result)) {
    if($go['avg'] != $cache_average)
        $cache_rank = $rank;

    $sql = mysql_query("INSERT INTO rank(student_id,avg,rank) VALUES('$go['student_id']','$go['avg']','$cache_rank')"); 

    $cache_average = $go['avg'];
    $rank++;
} 
?>