我正在运行一个查询,在html表中有两列。
c.course_unit
m.score
在m.score列中,我想做一个if语句,以便根据得分的某个范围授予一个点。例如
if ($row['m.score'] >= 70) {
point = 5;
}
然后使用每行授予的每个点乘以另一列中的相应值,即(c.course_unit)。
到目前为止,我已经能够提出这个问题了,而且它并不是关闭它的。
我非常感谢你真诚的帮助。 谢谢。
$grade_point = 0 ;
while ($row =mysql_fetch_assoc($query)) {
foreach ($row as $value) {
if ($value >= 70) {
$value['m.score'] = 5;
}
if ( $value['m.score'] >= 60 && $value['m.score']<= 69 ) {
$value['m.score'] = 4;
}
if ( $value['m.score'] >= 50 && $value['m.score']<= 59 ) {
$value['m.score'] = 3;
}
if ( $value['m.score'] >= 45 && $value['m.score']<= 49 ) {
$value['m.score'] = 2;
}
if ( $value['m.score'] >=40 && $value['m.score']<= 45 ) {
$value['m.score'] = 1;
}
if ($value['m.score'] < 40) {
$value['m.score'] = 0;
}
$grade_point += $value['m.score'] * $value['c.course_unit'];
echo "$grade_point";
}
}
答案 0 :(得分:1)
只需删除foreach循环即可。它遍历你的领域。
以下是应该有效的完整代码。我还更改了一些变量名来修复它。
$grade_point = 0;
while ($row8 = mysql_fetch_assoc($query8)) {
$marks = intval($row8['score']);
if ($marks >= 70) {
$score = 5;
} elseif ($marks >= 60) {
$score = 4;
} elseif ($marks >= 50) {
$score = 3;
} elseif ($marks >= 45) {
$score = 2;
} elseif ($marks >= 40) {
$score = 1;
} else{
$score = 0;
}
$grade_point+= $score * intval($row8['course_unit']);
echo $grade_point;
}
注意。
elseif
代码。 (感谢zerkms )答案 1 :(得分:0)
你应该修好你的条件。例如,如果条件为:
,则得分为45if ( $value['m.score'] >= 45 && $value['m.score']<= 49 ){
$value['m.score'] = 2 ;}
if ( $value['m.score'] >=40 && $value['m.score']<= 45 ){
$value['m.score'] = 1 ;}
另外,你的第一个条件没有关键...只是$ value而不是$ value ['m.score']
...因为你正在使用$ value ['m.score']存储你的观点......最后一个条件总是如此。你的m.score最终总是0
答案 2 :(得分:0)
通过简化来简化它:
<?php
$grade_point = 0 ;
while ($row =mysql_fetch_assoc($query)) {
foreach ($row as $value) {
$mscore = $value['m.score'];
$res;
if ( $mscore < 40) {
$res = 0;
}
if ( $mscore <= 45 ) {
$res = 1;
}
if ( $mscore <= 49 ) {
$res = 2;
}
if ( $mscore <= 59 ) {
$res = 3;
}
if ( $mscore <= 69 ) {
$res = 4;
}
if ($mscore >= 70) {
$res = 5;
}
$grade_point += $res * $value['c.course_unit'];
echo "$grade_point";
}
}