php – 当条件发生时断开循环,并避免使用其预设的db值
假设学生在一个学期内修读6门课程.所有这些都有coures单位(int),并且根据每个课程的分数有分数..
so a score >=70 will have a point of 5 <70 and >=60 will have a ponit of 4 等等.对于每个课程单元和点,将每个列的列向下相乘.现在,当找不到课程的分数时,成绩为“AR”.现在我想要的是循环省略AR的出现…即不添加具有等级’AR’的课程的课程单元.但是,当我在上面运行我的查询时,单位仍然会添加到总课程单元中. Query4用于生成一些course_unit和Score的行 $query4 = mysql_query("SELECT c.course_unit,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()); Query3用于course_units的求和 $query3 = mysql_query("SELECT SUM(c. course_unit) AS 'TOTAL' 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()); 分数等级 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'; }elseif($row8['score'] >= 0) && ($row8['score'] < 40){ $grade = 'F'; }else{ $grade = 'AR'; } } 等级点的计算 $grade_point = 0; while ($row4 = mysql_fetch_assoc($query4)) { if ($row4['score'] >= 70) { $score = 5; } elseif ($row4['score'] >= 60) { $score = 4; }elseif ($row4['score'] >= 50) { $score = 3; }elseif ($row4['score'] >= 45) { $score = 2; }elseif($row4['score'] >= 40) { $score = 1; }elseif($row4['score'] >= 0 AND $row4['score'] < 40) { $score = 0; }else{ $score = 0; } $grade_point += $score * $row4['course_unit']; } 我已经添加了 if ( $grade == 'AR' ) { continue; } 但计算结果仍然相同.它添加了任何课程的course_unit值 $grade == 'AR' . 我会非常高兴你的答案. UPDATE 我能够通过添加来解决等级piont部分 elseif($row4['score'] >= 0 AND $row4['score'] < 40) { $score = 0; }else{ $score = 0; } 这将得分在0到39之间的出现设置为零,并且将默认得分<0(即AR)设置为零. 我认为这个问题是由于course_unit是从数据库预加载的事实.有帮助吗? Courses Table Stucture ================= course_id course_code course_title course_unit 我对你的答案非常满意. 解决方法
是否像在SELECT SUM语句中添加“AND NOT’AR’”一样简单?
或者……如果您的数据库值以AR形式出现,为什么不能在循环中使用PHP is_int()?这将允许您仍然为F分配0,并且只是跳过从数据库发送的任何非整数值. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |