Задать вопрос

Как сделать сортировку таблицы по нажатию заголовка столбца?

Есть таблица заполняемая из MySQL. Сделал сортировку, но работает не так как нужно. По умолчанию при открытии страницы должны быть сортировка по id_ticket по возрастанию. А сейчас при открытии страницы сортировка по убыванию. При нажатии на заголовок дата создания происходит сортировка по возрастанию, а если нажать еще раз, должно отсортироваться по убыванию, но ничего не происходит.
<table class="table table-sm table-responsive-md table-striped table-bordered table-hover text-center">
               <thead>
                    <tr>
                        <th scope="col">#</th>
                        <th scope="col" hidden><a href="./index.php?key=id_ticket&sort=$sort/">ID</a></th>
                        <th scope="col"><a href="./index.php?key=create_date&sort=$sort/">Дата создания</a></th>
                        <th scope="col">Описание</th>
                        <th scope="col">Заявитель</th>
                        <th scope="col" hidden>Кабинет</th>
                        <th scope="col" hidden>Телефон</th>
                        <th scope="col">Этап</th>
                        <th scope="col">Исполнитель</th>
                        <th scope="col">Приоритет</th>
                        <th scope="col">Срок завершения</th>
                    </tr>
                </thead>
                <tbody>
                    <?php
                        
                        if (isset($_GET['key'])) {
                            $key = $_GET['key'];
                            $sort = $_GET['sort'];
                        } else {
                            $key = 'id_ticket';
                            $sort = 'asc';
                        }
                        
                        if($sort=='asc'){
                            $sort='desc';
                        } else {
                            $sort='asc';
                        }
                        
                        $sql_tbl_tickets = "SELECT * FROM tickets, priority, stages WHERE tickets.priority = priority.id AND tickets.stage = stages.id AND stages.id = '5' ORDER BY $key $sort";
                        $result_tbl_tickets = mysqli_query($connection, $sql_tbl_tickets);
                    
                        $row_index = 1;
                        
                        while ($row_tbl_tickets = mysqli_fetch_array($result_tbl_tickets)){
                            echo '<tr class="tckttbl" id="' . $row_index . '">
                                    <th scope="row">' . $row_index . '</th>
                                    <td hidden>' . $row_tbl_tickets['id_ticket'] . '</td>
                                    <td>' . $row_tbl_tickets['create_date'] . '</td>
                                    <td>' . $row_tbl_tickets['description'] . '</td>
                                    <td>' . $row_tbl_tickets['author'] . '</td>
                                    <td hidden>' . $row_tbl_tickets['cabinet'] . '</td>
                                    <td hidden>' . $row_tbl_tickets['phone'] . '</td>
                                    <td>' . $row_tbl_tickets['stage'] . '</td>
                                    <td>' . $row_tbl_tickets['executor'] . '</td>
                                    <td>' . $row_tbl_tickets['priority'] . '</td>
                                    <td>' . $row_tbl_tickets['completion_date'] . '</td>
                                  </tr>';
                                    $row_index++;
                        }
                    
                    ?>
                </tbody>
            </table>
  • Вопрос задан
  • 255 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 2
@sl0
<th scope="col" hidden><a href="./index.php?key=id_ticket&sort=<?= isset($_GET['sort'] && $_GET['sort'] == 'asc' ? 'desc' : 'asc') ?>">ID</a></th>
<th scope="col"><a href="./index.php?key=create_date&sort=<?= isset($_GET['sort'] && $_GET['sort'] == 'asc' ? 'desc' : 'asc') ?>/">Дата создания</a></th>
Ответ написан
Tomio
@Tomio
backend developer (python, php)
Делайте сортировку на JS - https://datatables.net/
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽