列标题和更新异常

时间:2012-03-14 15:56:36

标签: php mysql html arrays loops

我需要你帮助我的脚本。我正在生成一个新专栏,根据分数将特定分数授予等级。 此查询用于从主表中获取分数。

$query8 =mysql_query("SELECT  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());
    $number_cols1 = mysql_num_fields              ($query8);

我能够相应地生成成绩,并且在HTML表格中添加了一个新列,但是我在将标题添加到添加的新列时遇到了问题,即“成绩”。 另外我注意到,当我更新分数并重新运行结果页面时,成绩实施确实生效,即如果前评分为“80”且成绩为“A”,并且我将评分降级为“33”对于“F”,脚本仍然输出“A”,而得分已经改变。

2)我也试图将所有等级为“F”的课程复制到一个单独的表格中。因此,学生将知道他/她将要重新学习的课程。但我的阵列实现并没有实现这一点。

谢谢你的帮助。

               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';
              }else{
              $grade = 'F';
              }   }          

                echo "<table border = \"2\"                  cellspacing = \"1\" cellpadding =              \"2\"  bgcolor = MediumPurple class             =\"cambria\" >\n"; 
    echo "<tr align= \"center\">\n";

             echo "<th>";     //this echo out
         echo"s/n";        //the serial number
echo "</th>\n";  //heading for the table                      
     for ($i=0; $i<$number_cols; $i++) {                         
             echo "<th>" . mysql_field_name           ($query7, $i). "</th>\n";


                  }$serial = 0;                                                                                                 
               while ($row = mysql_fetch_row           ($query7)) {    
                  $serial++; 
                  echo "<tr align=center>\n"; 
                   echo"<td>";   
                  echo $serial;  
                  echo"</td>\n"; 

                  foreach ($row as $value)   
                   {    
                    echo "<td>$value</td>\n"; 
                   }      

                  echo "<td>";     
                  echo $grade ;        
                  echo "</td>\n";                        

                  }       
         for ($i=0; $i<$number_cols; $i++) {   
                  echo "</tr>\n"; 
                  echo "</table>"; 

1 个答案:

答案 0 :(得分:1)

请清理那段代码,这是一个丑陋的丑陋混乱,几乎无法通读。

话虽这么说,问题是你在获取个人成绩之前设定了字母等级。您似乎使用query7来获取成绩,但在查询甚至运行之前确定得分,因此您为query7提取的每个成绩输出相同的字母得分。

查看HEREDOC,它们将有助于消除“倾斜牙签综合征”的不良情况 - 输出html的重复回声对于可维护性和易读性而言非常糟糕。