Таблица данных не отображает все данные из запроса - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть запрос, который дает правильные результаты, после этого я могу отображать записи, но не в том формате, который мне нужен. Рабочим форматом было «Имя ученика, класс». Я хотел бы показывать имя ученика только один раз подряд, а затем показывать каждую оценку. У меня есть код, который теряет данные при отображении таблицы.

1-й ряд теряет 0 записей. 2-й ряд теряет 1 запись. 3-й ряд теряет 2 записи. Этот шаблон продолжается до тех пор, пока у запроса больше не будет данных для извлечения У меня есть следующий код.

$sql = "SELECT CONCAT(s.last_name, ', ',s.first_name) AS 'Student Name',g.grade 
        FROM `grades` g 
            JOIN assignments a ON a.assignment_id=g.assignment_id 
            JOIN teacher t ON t.teacher_id=a.teacher_id 
            JOIN students s ON s.student_id=g.student_id 
        WHERE a.teacher_id='" . $_SESSION['userId'] . "' 
        AND a.subject_id='2' 
        ORDER BY s.last_name ASC";

$sqlCount = "SELECT COUNT(assignment_name) 
             FROM `assignments` 
             WHERE subject_id = '2' 
             AND teacher_id= '" . $_SESSION['userId'] . "';";

//gets the number of assignments so it can display the table
$resultCount = mysqli_query($connection, $sqlCount);
$countNum = mysqli_fetch_assoc($resultCount);
$counter = $countNum['COUNT(assignment_name)'];
$result = mysqli_query($connection, $sql); 

while($row2 = mysqli_fetch_assoc($result)){
    if($counter == 0){
        echo"<tr><td>{$row2['Student Name']}</td>";
        echo"<td>{$row2['grade']}</td>";
        $counter++;
    } else if($counter < $countNum['COUNT(assignment_name)']){
        echo"<td>{$row2['grade']}</td>";
        $counter++;
    } else{ 
        $counter = 0;
        echo"</tr>";
    }
}

Вот мой желаемый формат вывода. Мне пришлось сделать ссылку, потому что моя учетная запись была новой

enter image description here

1 Ответ

0 голосов
/ 14 ноября 2018

Казалось бы, намного проще.

$sql = "SELECT CONCAT(s.last_name, ', ',s.first_name) AS StudentName,g.grade 
        FROM `grades` g 
            JOIN assignments a ON a.assignment_id=g.assignment_id 
            JOIN teacher t ON t.teacher_id=a.teacher_id 
            JOIN students s ON s.student_id=g.student_id 
        WHERE a.teacher_id='" . $_SESSION['userId'] . "' 
        AND a.subject_id='2' 
        ORDER BY s.last_name,s.first_name ASC";


$result = mysqli_query($connection, $sql); 

$last_stud = null;

while($row2 = mysqli_fetch_assoc($result)){
    if($last_stud != $row2['StudentName']){

        // close previous <tr>
        if ( $last_stud !== null ) {
            echo '</tr>';
        }

        $last_stud = $row2['StudentName'];
        echo"<tr><td>{$row2['StudentName']}</td>";
        echo"<td>{$row2['grade']}</td>";
    } else {
        echo"<td>{$row2['grade']}</td>";
    }
}
echo '</tr>';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...