У меня есть таблица html, которая заполняется из текстового файла, отформатирована и разделена запятой. Я хотел бы, чтобы пользователь имел возможность сортировки в алфавитном порядке с любым из столбцов при нажатии на имя столбца (заголовок).
Как это сделать в php? Или есть другой способ сделать это? Спасибо за вашу помощь.
Пример исходных данных / ввода выглядит следующим образом:
TYPE=abc;PART=georgetown;FILE=goog_abc.dat.2010122211.gz TYPE=xyz;PART=ucny;FILE=aol_xyz.dat.2010122209.gz
Код Php для таблицы:
$lines = preg_split('~\s*[\r\n]+\s*~', file_get_contents('/temp/tab.txt')); foreach($lines as $i => $line) { $pairs = explode(';', $line); foreach($pairs as $pair) { list($column, $value) = explode('=', $pair, 2); $columns[$column] = true; $rows[$i][$column] = $value; } } $columns = array_keys($columns); echo '<table><thead><tr>'; foreach($columns as $column) { echo '<th>'.$column.'</th>'; } echo '</tr></thead><tbody>'; foreach ($rows as $row) { echo '<tr>'; foreach($columns as $column){ echo '<td>'.$row[$column].'</td>'; } echo '</tr>'; } echo '</tbody></table>';
Я бы рекомендовал использовать jQuery . На самом деле это похоже на то, что вам нужно.
Изменить Поместите это между вашими тегами <head>
<script type="text/javascript"> $(document).ready(function() { $("#myTable").tablesorter( {sortList: [[0,0], [1,0]]} ); } ); </script>
Или вы можете поместить его в отдельный файл и связать его так. (Возможно, только это сделайте, если вы намереваетесь написать больше javascript.
<script type="text/javascript" src="path/to/file.js"></script>
Используйте javascript для сортировки таблицы после ее рисования. Попытка добавления такого рода сортировки из PHP является болезненной и не нужна, если у вас нет нескольких страниц данных (тогда вам нужно, чтобы PHP сортировал ее в стороне базы данных). Вот список, который дает вам много вариантов для сортируемых таблиц – вы сможете применить многие из них к своей таблице после создания ее с помощью PHP.
http://www.webdesignbooth.com/15-great-jquery-plugins-for-better-table-manipulation/