我的评分系统的问题

时间:2012-03-15 03:39:52

标签: php mysql

这部分代码用于在我申请学生学期成绩(课程分数)时将成绩授予学生分数。但是,只有特定等级被授予所有分数,大多数时候上传到学生数据库的最后结果被授予所有分数。当我把时期添加到等级,即

  $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());

2 个答案:

答案 0 :(得分:0)

需要将结果存储在数组中......当使用任何循环逻辑时......就像这样

$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你可以检索你得到的结果...... 感谢

答案 1 :(得分:0)

除了将A / B / C / D / E / F设置为A / B / C / D / E / F外,您永远不会在循环中执行任何$ grade等级的操作。因此,无论最后得分的价值如何,都将决定$ grade的最终价值。你在哪里将$ grade的价值应用于其他东西?

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

 do_something_with_grade($grade);