Есть постраничный вывод данных из бд. Необходимо сделать сортировку по алфавиту и по датам прямо на странице. Как это лучше всего и проще сделать? Код (Text): $r = $_PAGING->get_page( 'SELECT * FROM material ORDER BY id_number DESC' ); echo '<h2>Все материалы</h2>'; echo '<table cellspacing=0px; class="material_show">'; echo '<tr><td style="height:15px; background-color:#BED2F3" colspan="6"></td></tr>'; echo '<tr> <th style="width:25px">Код</th> <th style="width:60px">Дата</th> <th style="width:250px">Название</th> <th style="width:90px">Отдел <FORM action="sort1.</th> <th style="width:190px">Путь</th> <th style="width:100px">Исполнитель</th></tr>'; while($row = $r->fetch_assoc()) { echo '<tr>'; echo '<td align="center">'.$row['id_number'].'</td> <td align="center">'.$row['date'].'</td> <td>'.$row['name'].'</td> <td>'.$row['section'].'</td> <td>'.$row['path'].'</td> <td>'.$row['executor'].'</td>'; echo '</tr>'; } echo '<tr><td style="height:15px; background-color:#BED2F3" colspan="6"></td></tr>'; echo '</table>';
"прямо на странице" это как, без перезагрузки? тогда рекомендую подключить jQuary и соответствующий плагин. гуглить "jquery plugin table sort" иначе: про SELECT... ORDER BY слышал?
Слышал) Думаю сделать через option. Чтоб при выборе происходила перезагрузка и сортировка. в value буду передавать по какому столбцу сортировать Только не знаю как сделать чтоб сортировалось в двух направлениях (ASC, DESC)
Здравствуйте, mityaj. Загоняйте данные в javascript-массив. Далее: или array.sort(); или array.sort() и array.reverse().
mityaj, бросается в глаза, что ты вставил тег FORM в неудачное место. Теги не должны пересекаться. Не факт, что тебе вообще нужен form. Достаточно формировать правильную ссылку в теге A. Например GET-параметр sort будет отвечать за сортировку Код (Text): <a href="http"//mysite.com/page.php?sort=name,ASC">Имя</a> Вот тестовый пример: Код (PHP): <?php $default_sort = array('col' => 'name', 'dir' => 'ASC'); // значение по умолчанию $sort_columns = array('id', 'name', 'price'); // сортировка возможна только по этим столбцам $sort_directions = array('ASC', 'DESC'); // сортировка возможна только с этими словами if (empty($_GET['sort']) || !preg_match('/(?P<col>\w+),(?P<dir>\w+)/', $_GET['sort'], $sort) || !in_array($sort['col'], $sort_columns) || !in_array($sort['dir'], $sort_directions)) { $sort = $default_sort; } echo "SELECT * FROM mytable ORDER BY {$sort['col']} {$sort['dir']}"; Надо быть очень осторожным вставляя параметры в текст SQL запроса. В данном случае мы явно проверяем через регулярку и in_array() что будут использованы только нужные слова и ничего лишнего! Добавлено спустя 2 минуты 28 секунд: Ну и плюс тебе надо формировать нужные ссылки в заголовках колонок. Если сортировка по текущей колонке уже есть, то в ссылку подставлять DESC вместо ASC. Это стандартный интуитивно-понятный подход в пользовательском интерфейсе: щелкая по колонке сортируешь в ту или обратную сторону.