使用php和mysql评分系统

时间:2016-07-09 20:51:41

标签: php mysql

  1. 在数据库中,某些课程值为NULL,我不想打印具有NULL值的课程。 我不知道如何在php或mysql中实现这一点。我需要这样的东西:

    if(course1!=NULL || course2!=NULL || course3!=NULL || course4!=NULL){ // echo course1; echo course2; echo course3; echo course4; }

  2. 数据库如下所示:

    The database

    到目前为止的输出看起来像这样: enter image description here

    1. 检查课程是A,B,C,D,E还是F的remark()函数无法正常工作。 我希望remark()函数在等级上输出Excellent,Credit,Pass或fail。

      以下是代码:     

      function remark(){
      
      global $mathematics, $physics, $chemistry, $lang;
      
      if($mathematics=='A' || $physics=='A' || $chemistry=='A' || $lang=='A'){
          $remark = "Excellent";
      }
      
      elseif($mathematics=='B' || $physics=='B' || $chemistry=='B' || $lang=='B' || $mathematics=='C' || $physics=='C' || $chemistry=='C' || $lang=='C'){
      $remark = "Credit";
      }
      elseif($mathematics=='D' || $physics=='D' || $chemistry=='D' ||         $lang=='D' || $mathematics=='E' || $physics=='E' || $chemistry=='E' || $lang=='E'){
          $remark = "Pass";
      }
          else{
          $remark = "Fail";
      }
      return $remark;
      }
      if(isset($_POST['student_id']) && !empty($_POST['student_id'])){$student_id = $_POST['student_id'];
      
             $check = "SELECT * FROM sample1 WHERE student_id='$student_id'";
             $check_query = mysqli_query($connection, $check);
             if(mysqli_num_rows($check_query)>0){
      
       while($query_row = mysqli_fetch_assoc($check_query)){
      
              $mathematics = $query_row['mathematics'];
              $physics = $query_row['physics'];
              $chemistry = $query_row['chm'];
              $lang = $query_row['lang'];
      
      echo "<table border=1 width=50%>
              <tr> <td>Name: ".$query_row['name']."  </td> 
                  <td>Student Id: ".$query_row['student_id']."</td>
                  <td>Level: ".$query_row['level']."</td>
              </tr>
              <tr> 
                  <th> Course </th>
                  <th> Grade </th> 
                  <th> Remark </th>  
              </tr>
      
              <tr> <td>Mathematics </td> <td>".$mathematics." </td></td> <td>".remark()." </td></tr>
              <tr> <td>Physics </td> <td>".$physics."</td> </td><td>".remark()." </td></tr>
              <tr> <td>Chemistry </td> <td>".$chemistry."</td> </td><td>".remark()." </td></tr>
              <tr> <td>Language </td> <td>".$lang."</td> </td><td>".remark()." </td></tr>
      
          </table>";
                        }
                      }
                      else{echo "Record not found";}
                      }
      

2 个答案:

答案 0 :(得分:1)

关于MYSQL非null值,您可以使用:

SELECT * FROM yourtable WHERE course1 IS NOT NULL

因此,IS NOT NULL将为您提供查询,其中该列(course1)不为null。 Here更多信息。

对于PHP,您的remark()函数有错误的方法。我会给你一个对你的家伙来说是正确的。

function remark($course){

    switch($course) {

        case 'A':
            return 'Excellent';
        break;

        case 'B':
        case 'C':
            return 'Credit';
        break;

        case 'D':
        case 'E':
            return 'Pass';
        break;

        default:
            return 'Fail';
        break;

    }

}

因此,在HTML表格中,您可以为每个课程执行此操作:

while ($query_row = mysqli_fetch_assoc($check_query)) {

    $mathematics = $query_row['mathematics'];
    $physics     = $query_row['physics'];
    $chemistry   = $query_row['chm'];
    $lang        = $query_row['lang'];

    echo "<table border=1 width=50%>
        <tr> <td>Name: " . $query_row['name'] . "  </td>
            <td>Student Id: " . $query_row['student_id'] . "</td>
            <td>Level: " . $query_row['level'] . "</td>
        </tr>
        <tr>
            <th> Course </th>
            <th> Grade </th>
            <th> Remark </th>
        </tr>"

        if(!is_null($mathematics)) echo "<tr> <td>Mathematics </td> <td>" . $mathematics . " </td></td> <td>" . remark($mathematics) . " </td></tr>";
        if(!is_null($physics)) echo "<tr> <td>Physics </td> <td>" . $physics . "</td> </td><td>" . remark($physics) . " </td></tr>";
        if(!is_null($chemistry)) echo "<tr> <td>Chemistry </td> <td>" . $chemistry . "</td> </td><td>" . remark($chemistry) . " </td></tr>";
        if(!is_null($lang)) echo "<tr> <td>Language </td> <td>" . $lang . "</td> </td><td>" . remark($lang) . " </td></tr>";

    echo "</table>";
}

答案 1 :(得分:1)

第一个问题的快速回答延伸@ P0IT10n(?)的答案:

 <?php
     if(!is_null($mathematics)) { 
 ?>
        <tr> <td>Mathematics </td> <td>".$mathematics." </td></td> <td>".remark($mathematics)." </td></tr>
 <?php
     }
 ?>
 // repeat for other courses

<强> BUT
重新考虑您的数据库结构 一旦你有了另一门课程,你就得到了... *** 课程应该有自己的表,结果是另一个 阅读有关数据库规范化的信息!

修改
另一个延伸:
如果你有这样的数组会更容易:

$remarks = array('A'=>'Excellent', 'B'=>'Good',...);

那么你不需要使用开关的额外功能,你需要做的就是:

echo $remarks[$mathematics]; // -> Excellent