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

Есть таблица заполняемая из 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>
  • Вопрос задан
  • 229 просмотров
Пригласить эксперта
Ответы на вопрос 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/
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы