2012-03-13 2 views
0

これは私の問題です。 2つの列(学生番号とスコア)を含むcsvファイルをアップロードします。しかし、データからHTMLテーブルを作成すると、アップロードされたスコアに応じて列にグレードが表示されます。スコア> 40を持つすべてのコースは、すべて別のテーブルに配置する必要があります。以下は、私が仕事をしようとしているループですが、近くに私を得ることはありません。スコア値からデフォルトグレードを返す

ありがとうございました。私はそれを高く評価します。おかげ

while ($row4 = mysql_fetch_assoc($query4)) { 
    if ($row4['score'] >= 70) { 
     $grade = A; 
    } 
    elseif ($row4['score'] >= 60) { 
     $grade = B; 
    } 
    elseif ($row4['score'] >= 50) { 
     $grade = C; 
    } 
    elseif ($row4['score'] >= 45) { 
     $grade = D; 
    } 
    elseif($row4['score'] >= 40) { 
     $grade = E; 
    } 
    elseif($row4['score'] >= 40) { 
     $grade = F; 
    }else { 
     $grade = AR; 
    } 
} 
+1

CSVファイルとSQLクエリを入力してください。 – Otar

+0

「CSVファイルを提供する」とはどういう意味ですか? –

+1

「しかし、それは私の近くのどこにでも私を得ることはありません。あなたはそれを拡張していただけますか?エラーが出ますか? – vascowhite

答えて

0

:それはおそらくので、代わりにAなどの'A'でなければなりません。コースIDと学生IDがデータベース行にあると仮定しますが、そうでない場合は更新する必要があります。

<?php 

define('GRADE_A_MIN', 70); 
define('GRADE_B_MIN', 60); 
define('GRADE_C_MIN', 50); 
define('GRADE_D_MIN', 45); 
define('GRADE_E_MIN', 40); 
define('GRADE_F_MIN', 35); 

$table_one_values = array(); // Used to create table for students with scores 40+ 
$table_two_values = array(); 


while ($row4 = mysql_fetch_assoc($query4)) { 
    $score = $row4['score']; 
    $destination_table = 'two'; 

    if ($score >= GRADE_A_MIN) { 
     $grade = 'A'; 
     $destination_table = 'one'; 

    } elseif ($score >= GRADE_B_MIN) { 
     $grade = 'B'; 
     $destination_table = 'one'; 

    } elseif ($score >= GRADE_C_MIN) { 
     $grade = 'C'; 
     $destination_table = 'one'; 

    } elseif ($score >= GRADE_D_MIN) { 
     $grade = 'D'; 
     $destination_table = 'one'; 

    } elseif ($score >= GRADE_E_MIN) { 
     $grade = 'E'; 
     $destination_table = 'one'; 

    } elseif ($score >= GRADE_F_MIN) { 
     $grade = 'F'; 

    } else { 
     $grade = 'AR'; 

    } 

    $table = 'table_'.$destination_table.'_values'; 
    $$table[] = array(
     'course_id'  => $row4['course_id'], 
     'student_id' => $row4['student_id'], 
     'score'   => $score, 
     'grade'   => $grade 
    ); 
} 
0

いくつかの問題:あなたが唯一の最後の最後の値を持つことになりますので、

  • あなた$grade変数がループ内で上書きされます。あなたの行に学生番号も含まれているので、$grade[$row4['number']] = 'A';のようなことをして、その特定の学年を特定の学生番号にリンクさせることができます。ループの前に配列を設定することに注意してください。ABなどが定数でない限り、割り当てが間違っています。ループの前に配列を設定してください。$grade = array();
  • 私が正しく理解していれば、次のようにあなたが探している何をすべき$grade[$row4['number']] = 'C';など
+0

注:学生番号は単なるIDであり、スコアから成績を割り当てることとは関係ありません。おかげさまで –

+0

@ dotman14残りのコードを表示する必要があります。 '$ query4'が返す行は何ですか? – jeroen

+0

www.pastebin.com/VhwMXyymここに私のフルコードのペーストがあります。私はグレード8のデータを引き出すためにQuery8を使用しています。したがって、$ row8など 私はグレードと別の列を追加することができますが、それにヘッダーを置く方法を知らない、それは右に追加されました。また、スコアを更新してもグレードは変わりません。それはまだ初期スコアの等級を保持します –

関連する問題