我的评分系统有问题


Issues with my grading system

每当我请求学生学期成绩(课程成绩)时,我的代码的这一部分用于为学生成绩打分。但是,只有一个特定的分数会被授予所有分数,大多数情况下,上传到学生数据库的最后一个结果会被授予全部分数。当我在等级中添加周期时,即

  $grade .= 'A';
  $grade .= 'B';
  $grade .= 'C';
  $grade .= 'D';
  $grade .= 'E';

在每列中重复所有等级。因此,假设一个特定的学生在一个学期内学习了6门课程,并且总共有

  3 A's , 2 B's , 1 C 

在六个课程中,每一行都重复6个年级。

我很乐意展示代码的其他部分。谢谢你的时间和耐心。

   while ($row8 = mysql_fetch_assoc               ($query8)) {
            if ($row8['score'] >= 70) {
              $grade = 'A';
           }
            elseif ($row8['score'] >= 60) {
            $grade = 'B';
            }elseif ($row8['score'] >= 50) {
            $grade = 'C';
            }elseif ($row8['score'] >= 45) {
            $grade = 'D';
            }elseif($row8['score'] >= 40) {
            $grade = 'E';
            }else{
            $grade = 'F';
            }   
            }   

这是查询(query8),用于查找学生学期课程的分数。

        $query8 = mysql_query("SELECT  m.          score 
  FROM    maintable AS m  
  INNER JOIN students AS s ON
  m.matric_no = s.matric_no
  INNER JOIN courses AS c ON 
   m.course_code = c.course_code
  WHERE m.matric_no = '".$matric_no."'
 AND m.level = '".$level."'") 
 or die (mysql_error());

需要将结果存储在数组中。。。当使用任何循环逻辑时。。。喜欢这个吗

$arr = array();
while ($row8 = mysql_fetch_assoc               ($query8)) {
            if ($row8['score'] >= 70) {
              $grade = 'A';
           }
            elseif ($row8['score'] >= 60) {
            $grade = 'B';
            }elseif ($row8['score'] >= 50) {
            $grade = 'C';
            }elseif ($row8['score'] >= 45) {
            $grade = 'D';
            }elseif($row8['score'] >= 40) {
            $grade = 'E';
            }else{
            $grade = 'F';
            }
            $arr[$row8['score']] = $grade; 
            }

现在从$arr你可以检索结果你得到什么。。。感谢

除了将$grade设置为A/B/C/D/E/F之外,您永远不会在循环中使用它。因此,无论最后一个分数的值是多少,都将决定$grade的最终值。你在哪里将$grade的值应用于其他东西?

在所有if语句之后,循环的最后一行看起来应该是这样的:

 do_something_with_grade($grade);