php - 在条件发生时跳出循环,并避免使用其预设的 db 值

标签 php mysql database loops break

假设一名学生在一个学期内修读 6 门类(class)。所有这些类(class)都有类(class)单元(int),并且根据每门类(class)的分数有分数..

 so a score >=70 will have a point of 5

 <70 and >=60 will have a ponit of 4

等等。对于每个类(class)单元和点都相乘,向下为每一列的列。现在,当找不到类(class)分数时,等级为“AR”。现在我想要的是循环省略 AR 的出现..即不添加具有“AR”等级的类(class)的类(class)单元。但是当我在上面运行我的查询时,单元仍然添加到总类(class)单元中。

Query4用于生成course_unitScore

的一些行
  $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;
  }

但是计算还是一样的。它添加任何类(class)的 course_unit 值

$grade == 'AR' .

我会很高兴得到你的回答。 非常感谢。

更新

我已经能够通过添加来解决成绩点部分

     elseif($row4['score'] >= 0 AND                       $row4['score'] < 40) {
             $score = 0;
          }else{
             $score = 0;
          }

这会将 0 到 39 之间分数的出现次数设置为零,并将 <0(即 AR)的默认分数设置为零。 但它仍然将具有 AR 等级和 -1 分数的类(class)的值设置为 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 - 在条件发生时跳出循环,并避免使用其预设的 db 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9760195/

相关文章:

php - 如何使用 PHP 和 MYSQL 自动显示多个图表?

java - 通讯链接失败 Caused by : java.net.SocketException : Connection reset.

java - 优化一些后续 Hibernate 加载/保存调用的想法

php - MySQL中的字符集;不能插入特殊字符,为什么?

mysql - mysql中的循环更新语句

php - 不将 ajax 查询中的 html 选择数据保存到 session 中

php - 如何使用json检索数据到mysql android

php - 如何从mysql获取值到下拉列表?

django - WordPress 漂亮的永久链接故障转移 SSL - 404 文件不存在

javascript - jQuery根据点击交换和隐藏div内容