function SubjectPosition($term, $session, $subject, $class, $student_id, $category){
$res = 'results_sec';
$get_position = mysqli_query($mysqli, "SELECT student_id, (SUM(con_ass)+SUM(hwork)+SUM(test)+SUM(exam_score)) AS Total
FROM `$res`
WHERE `class_id` = '$class'
AND `subject_id` = '$subject'
AND `session_id` = '$session'
AND `term_id` = '$term'
GROUP BY student_id
ORDER BY Total DESC") or die(mysqli_error($mysqli));
$post = 1;
$temp_score = 0;
while ($rs = $get_position -> fetch_assoc()){
$stud_id = $rs['student_id'];
$score = $rs['Total'];
if($student_id == $stud_id && $temp_score <> $score){
return $post;
}
else if($student_id == $stud_id && $temp_score == $score){
return $post - 1;
}
$temp_score = $score;
$post = $post + 1;
}
}
Предполагая, что запрос возвращает
Student_id | Total
-----------------------------------
SID/001 | 701
SID/005 | 702
SID/007 | 702
SID/002 | 702
SID/003 | 655
SID/004 | 639
У меня есть вышеуказанный код и я хотел сгенерировать позицию для результата.
Я хочу, чтобы позиция была похожа на следующую таблицу
Student_id | Total | Position
----------------------------------------------------
SID/001 | 701 | 1
SID/005 | 702 | 2
SID/007 | 702 | 2
SID/002 | 702 | 2
SID/003 | 655 | 5
SID/004 | 639 | 6
Что мне нужно исправить в моем сценарии выше. Любая помощь будет оценена.
function SubjectPosition($term, $session, $subject, $class, $student_id, $category){
$res = 'results_sec';
$get_position = mysqli_query($mysqli, "SELECT student_id, (SUM(con_ass)+SUM(hwork)+SUM(test)+SUM(exam_score)) AS Total
FROM `$res`
WHERE `class_id` = '$class'
AND `subject_id` = '$subject'
AND `session_id` = '$session'
AND `term_id` = '$term'
GROUP BY student_id
ORDER BY Total DESC") or die(mysqli_error($mysqli));
$post = 0;
$temp_score = 0;$return_pos = 0;
while ($rs = $get_position -> fetch_assoc()){
$stud_id = $rs['student_id'];
$score = $rs['Total'];
$post = $post + 1;
if($temp_score <> $score) {
$return_pos = $post;
}
if($student_id == $stud_id {
return $return_pos;
}
$temp_score = $score;
}
}
Других решений пока нет …