Возврат оценки по умолчанию из значения оценки - PullRequest
0 голосов
/ 14 марта 2012

Вот моя проблема.Я загружаю 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;
    }
}

Ответы [ 2 ]

0 голосов
/ 14 марта 2012

Если я правильно понимаю, следующее должно делать то, что вы ищете. Я предполагаю, что ваш идентификатор курса и идентификатор студента находятся в строке базы данных, но вам нужно будет обновить их, если нет.

<?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 голосов
/ 14 марта 2012

Некоторые проблемы:

  • Ваша переменная $grade перезаписывается в цикле, поэтому в конце у вас будет только последнее значение. Поскольку в вашей строке также указан номер учащегося, вы можете сделать что-то вроде: $grade[$row4['number']] = 'A';, чтобы связать эту конкретную оценку с конкретным номером учащегося. Обратите внимание, что вы должны установить свой массив перед циклом: $grade = array();
  • Ваше назначение неверно, если A, B и т. Д. Не являются константами. Вероятно, оно должно быть 'A' вместо A и т. Д. Итак: $grade[$row4['number']] = 'C'; и т. Д.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...