2012-03-14 1 views
0

私はあなたのスクリプトを助けてください。私は新しい欄を作成しています。これにより、特定の得点には得点に応じた成績が与えられます。 このクエリは、メインテーブルからスコアを取得するために使用されました。列の見出しと更新の異常

$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表に追加されましたが、私は、すなわち「グレード」に追加された新しい列に見出しを入れて問題を抱えています。 また、スコアを更新して結果ページを再実行すると、グレードの実装が有効になることに気付きました。つまり、以前のスコアがグレード「A」で「80」で、グレード「A」で「33」にダウングレードした場合です。スコアが変更されている間、スクリプトは "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

このコードを消去してください

言われているように、問題はあなたが個々の成績を取り出す前にレターグレードを設定しているということです。 query7を使用して成績を取得しているようですが、その照会が実行される前にスコアを決定するので、query7によって取得されたすべての成績について同じ文字スコアを出力します。

ルックアップHEREDOCさんは、「爪楊枝症候群」の悪いケースを排除するのに役立ちます。出力htmlの繰り返しエコーは、保守性と読みやすさのために恐ろしいものです。

+0

私のタイピングを許してください。私は私の携帯電話からそれらのすべてをやった。忍耐力ありがとう。 –

関連する問題