You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将PHP考试系统的学生成绩按从高到低排序?

解决考试系统成绩从高到低排序的问题

Hey there! Let's get your exam system sorting scores from highest to lowest sorted out. Here's a straightforward solution tailored to your setup:

核心思路

每道题正确(标记为yes)得20分(100总分÷5道题),我们可以直接在SQL查询里计算每个学生的总分,再按总分从高到低排序。

修改后的SQL查询 + PHP代码

把你现有的查询替换成下面这段,它会自动计算总分并完成排序:

// 注意:把your_exam_table_name改成你实际的数据库表名,别用"table"这种SQL关键字
$result = mysqli_query($db, "
    SELECT 
        *,
        (
            IF(q1 = 'yes', 20, 0) +
            IF(q2 = 'yes', 20, 0) +
            IF(q3 = 'yes', 20, 0) +
            IF(q4 = 'yes', 20, 0) +
            IF(q5 = 'yes', 20, 0)
        ) AS total_score
    FROM your_exam_table_name
    ORDER BY total_score DESC
");

// 遍历排序后的结果输出
while($row = mysqli_fetch_array($result)) {
    // 示例输出:根据你的实际字段调整,比如学生姓名、ID等
    echo "学生: " . $row['student_name'] . " | 总分: " . $row['total_score'] . "/100<br>";
    // 要是需要展示各题对错,也可以在这里输出q1到q5的内容
}

代码细节解释

  • IF(qX = 'yes', 20, 0): 检查每道题是否正确,正确加20分,错误加0分
  • AS total_score: 把所有题目的得分总和命名为total_score字段,方便后续排序使用
  • ORDER BY total_score DESC: 按总分降序排列,这样结果就会从最高分开始展示

小提醒

  • 一定要替换your_exam_table_name为你真实的表名,用table作为表名会触发SQL关键字冲突
  • 以后如果调整题量或总分,只需修改每题对应的分值即可(比如10道题总分100的话,把20改成10)

内容的提问来源于stack exchange,提问作者Claudio Delgado

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:27:08