<?php echo " <table> <tr> <th> </th> <th><a href='?page=$page&block=$block&sort[1]=asc'>Столбец 1</a></th> <th><a href='?page=$page&block=$block&sort[2]=asc'>Столбец 2</a></th> <th><a href='?page=$page&block=$block&sort[3]=asc'>Столбец 3</a></th> </tr> "; foreach ($tab as $dat) echo " <tr> <td>{$dat['edit']}</td> <td>$dat[1]</td> <td>$dat[2]</td> <td>$dat[3]</td> </tr> "; echo " </table>"; ?>sort.tdd
<?php
$types[1] = 'varchar(100)';
$types[2] = 'varchar(100)';
$types[3] = 'varchar(100)';
$params['multi-record'] = true;
?>
В первой строке таблицы даны ссылки на сортировку по столбцам. При щелчке по ссылке, соответствующий столбец будет отсортирован по алфавиту в возрастающем порядке.
<a href='?page=$page&block=$block&sort[3]=desc'>Сортировать</a>
Для автоматического переключения направления сортировки на противоположный, можно применить следующий код:
Переключатель направления сортировки<?php
$order = (Request::get($block, 'sort', 3)=='desc') ? 'asc' : 'desc';
...'&sort[3]='.$order.'...
?>
<a href='?page=$page&block=$block&sort[1]=asc&sort[2]=desc'>Сортировать</a>
Приоритет сортировки столбцов задается порядком элементов массива в запросе.
Если сортировка записей должна производиться всегда и в одном и том же порядке, то предпочтительней объявить параметры сортировки в дескрипторе.
.tdd$params['sort'][1] = 'asc';
$params['sort'][2] = 'desc';
Порядок элементов массива определяет приоритеты при осуществлении многостолбцовой сортировки — в первую очередь сортировка будет производиться по тому столбцу, сортировка которого объявлена раньше.
Теперь URL получатся более короткими и более привлекательными для поисковых роботов:
<a href='?page=$page&block=$block&sort[1]=asc&sort[2]=desc'>Страница 2</a>
К тому же, индексация ссылок с sort-запросами по умолчанию вообще запрещена (в robots.txt).
Запросы сортировки через URL можно применять по-прежнему — они будут просто перебивать параметры, заданные в дескрипторе.