2012-03-15 2 views
0

Эта часть моего кода используется для присуждения оценки студенту, когда я запрашиваю результат студенческого семестра (оценки курса). Но для всех баллов присуждается только конкретный класс, чаще всего последний результат, который был загружен в базу данных студентов, присуждается всем баллам. Когда я прибавил период до уровня i.eПроблемы с моей системой классификации

$grade .= 'A'; 
    $grade .= 'B'; 
    $grade .= 'C'; 
    $grade .= 'D'; 
    $grade .= 'E'; 

все оценки были повторены в каждой колонке. Таким образом, предполагая, что конкретный студент взял 6 курсов в семестр и в общей сложности

3 A's , 2 B's , 1 C 

все 6 сортов повторялись на каждой строке для шести курсов.

Я буду рад продемонстрировать части кода. Благодарим вас за время и терпение.

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'; 
      } 
      } 

Это запрос (query8), который просматривает оценку для курсов студенческого семестра.

 $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()); 
+0

Что школа предлагает 'é' класс? –

+0

'$ query8' определенно важно знать, что происходит. Похоже, ваш 'JOIN' уверенно делает' CROSS JOIN', который возвращает все комбинации. – Guvante

+0

@guvante ... Какую часть кода я должен предоставить? .... Adam моя школа делает. –

ответ

0

необходимости хранить результат в массиве ... когда любая логика цикла является использование ... делать как этот

$arr = array(); 
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'; 
      } 

      $arr[$row8['score']] = $grade; 
      } 

теперь от $ обр вы можете получить результаты, что вы получите ... спасибо

+0

Я добавил массив, но я все равно получил тот же ответ. Спасибо –

+0

см. Логика совершенна ... может быть проблема с получением данных ... проверьте .. http://snippi.com/s/a1eq71x –

+0

Спасибо миллион. Может ли проблема, которую я использую для вызова данных, является проблемой? http://pastebin.com/s7QwCC3e спасибо –

0

Вы никогда ничего не делаете с $ grade в петле, отличной от A/B/C/D/E/F. Таким образом, любое значение, полученное последним, будет определять окончательное значение $ grade. Где вы применяете значение $ grade к чему-то еще?

Похоже, в последней строке цикла, ведь если заявления, должно быть что-то вроде этого:

do_something_with_grade($grade); 
Смежные вопросы