假设学生在一个学期内修读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)设置为零.
但它仍然设定了具有AR等级和得分为-1的课程的价值,以及course_unit的默认相应值.
我认为这个问题是由于course_unit是从数据库预加载的事实.有帮助吗?
Courses Table Stucture
=================
course_id
course_code
course_title
course_unit
我对你的答案非常满意.
谢谢你的期待.
解决方法:
是否像在SELECT SUM语句中添加“AND NOT’AR’”一样简单?
或者……如果您的数据库值以AR形式出现,为什么不能在循环中使用PHP is_int()?这将允许您仍然为F分配0,并且只是跳过从数据库发送的任何非整数值.
标签:php,mysql,database,loops,break
来源: https://codeday.me/bug/20190704/1376875.html