Проблема с отображением данных в таблице PHP/HTML

Я делаю электронный журнал и у меня возникла проблема. Если имеются уроки на которых более 1 типа работы, то почему-то типы работы дублируются. Из-за этого значения не влезают в таблицу. введите сюда описание изображения

Фрагмент кода отображения шапочки:

<thead>
                    <!-- Строка с месяцем -->
                    <tr>
                        <th rowspan=3 class="sticky-cell">Список учеников</th>
                        <?php
                        $currentMonth = '';
                        $monthDates = []; // Массив для хранения количества уроков в каждом месяце

                        // Массив для перевода месяцев на русский
                        $monthsRU = [
                            'January' => 'Январь', 
                            'February' => 'Февраль', 
                            'March' => 'Март', 
                            'April' => 'Апрель', 
                            'May' => 'Май', 
                            'June' => 'Июнь', 
                            'July' => 'Июль', 
                            'August' => 'Август', 
                            'September' => 'Сентябрь',
                            'October' => 'Октябрь', 
                            'November' => 'Ноябрь', 
                            'December' => 'Декабрь'
                        ];
                    
                        // Считаем количество уроков на каждый месяц
                        foreach ($dates as $row) {
                            $month = date('F', strtotime($row['date'])); // Получаем месяц на английском
                            if (!isset($monthDates[$month])) {
                                $monthDates[$month] = 1;
                            } else {
                                $monthDates[$month]++;
                            }
                        }
                    
                        // Выводим ячейки с названиями месяцев
                        foreach ($monthDates as $month => $lessonsInMonth) {
                            echo "<th colspan='$lessonsInMonth'>" . $monthsRU[$month] . "</th>"; // Используем массив для перевода
                        }
                        ?>
                        <th rowspan=3>Ср. балл</th>
                        <th rowspan=3>Итог<br><?php echo $period; ?> пер.</th>
                    </tr>
                    
                    <!-- Строка с числами -->
                    <tr style="padding: 0;">
                        <?php
                        $previousDate = null;
                                        
                        foreach ($dates as $dateRow):
                            $formattedDate = date('d', strtotime($dateRow['date']));
                            $dayid = $dateRow['dayid'];
                            $originalDate = $dateRow['date'];
                        
                            // Если это новая дата, отображаем ячейку
                            if ($previousDate !== $originalDate) {
                                // Получаем все типы для текущей даты и урока
                                $res = $conn->query("SELECT `homework` FROM `timetable` WHERE `groupname` = '$group' AND `lessonname` = '$lesson' AND `date` = '$originalDate' AND `dayid` = $dayid AND `period` = '$period'");
                            
                                echo "<th colspan='{$res->num_rows}' style='text-align: center;'>";
                            
                                // Отображение значка для ДЗ
                                if (empty($row['homework'])) {
                                    echo "<img src='/img/nohw.png' width='16' height='16' title='Нет домашнего задания'><br>";
                                } else {
                                    echo "<img src='/img/havehw.png' width='16' height='16' data-homework='" . htmlspecialchars($row['homework']) . "' class='homework-icon' title='Есть домашнее задание'><br>";
                                }
                                
                                // Ссылка на страницу журнала
                                echo "<a href='journal.php?group=$group&lesson=$lesson&date=$originalDate&idless=$dayid&period=$period'>" . htmlspecialchars($formattedDate) . "</a><br>";
                                
                                // Вывод всех типов в одной строке внутри одной ячейки
                                
                                echo "</th>";
                                // Обновляем предыдущую дату
                                $previousDate = $originalDate;
                                    }
                                endforeach;
                        
                                ?>
                    </tr>
                    <tr>
                    <?php
                        $previousDate = null;

                        $res = $conn->query("SELECT `type` FROM `timetable` WHERE `school` = '$currentschool' AND `period` = '$period' AND `teacher` = '$currentfullname' AND `groupname` = '$group'");
                            foreach ($dates as $dateRow) {
                                $dayid = $dateRow['dayid'];
                                $originalDate = $dateRow['date'];
                            
                                $stmt = $conn->prepare("SELECT `type` FROM `timetable` WHERE `dayid` = ? AND `date` = ? AND `school` = ? AND `period` = ? AND `teacher` = ? AND `groupname` = ?");
                                $stmt->bind_param("ssssss", $dayid, $originalDate, $currentschool, $period, $currentfullname, $group);
                                $stmt->execute();

                                $result = $stmt->get_result();

                                if ($result->num_rows > 0) {
                                    while ($row = $result->fetch_assoc()) {
                                        echo "<th>" . htmlspecialchars($row['type']) . "</th>";
                                    }
                                }
                            
                                $stmt->close();
                            }
                        ?>
                    </tr>
                </thead>

Структура таблицы timetable:
введите сюда описание изображения

Подскажите, как можно решить этот баг?


Ответы (0 шт):