php 循环满足条件退出,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)设置为零.

但它仍然设定了具有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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值