Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Отсортировать кликом по заголовку столбца
|
|||
|---|---|---|---|
|
#18+
Многомерный массив выведен в таблицу. Таблица с 4 полями: фамилия, имя, дата рождения, номер зачётной книжки. Сортировка по возрастанию для всех полей выполнена, как теперь реализовать по убыванию, подскажите. Необходимо так, чтобы при первом клике по полю (к примеру sirname) была сортировка по возрастанию, при втором по убыванию, при третьем снова по возрастанию, при четвёртом опять по убыванию... ? <?php include ("sortirovka.php"); $Mass = array( array('Surname' => 'Ив', 'Name' => 'Иван', 'Birthday' => '1966.01.01', 'Creditbook' => '111'), array('Surname' => 'Хр', 'Name' => 'Денис', 'Birthday' => '1968.02.02', 'Creditbook' => '112'), array('Surname' => 'Ша', 'Name' => 'Николай', 'Birthday' => '1975.03.03', 'Creditbook' => '1199'), array('Surname' => 'Че', 'Name' => 'Егор', 'Birthday' => '1976.04.04', 'Creditbook' => '1144'), array('Surname' => 'Пр', 'Name' => 'Евгений', 'Birthday' => '1962.05.05', 'Creditbook' => '110'), array('Surname' => 'Ар', 'Name' => 'Илья', 'Birthday' => '1960.06.06', 'Creditbook' => '116'), array('Surname' => 'Пу', 'Name' => 'Александр', 'Birthday' => '1999.07.07', 'Creditbook' => '117'), array('Surname' => 'Ма', 'Name' => 'Антон', 'Birthday' => '1988.08.08', 'Creditbook' => '118'), array('Surname' => 'Жд', 'Name' => 'Александр', 'Birthday' => '1980.09.09', 'Creditbook' => '119'), array('Surname' => 'Ше', 'Name' => 'Виталий', 'Birthday' => '1990.10.10', 'Creditbook' => '120') ); echo '<table border=1>'; # Шапка таблицы echo ' <table border=1> <tr> <td><a href="?sort=Surname&sort=ascsurname">Surname</a></td> <td><a href="?sort=Name&sort=ascname">Name</a></td> <td><a href="?sort=Birthday&sort=ascbirthday">Birthday</a></td> <td><a href="?sort=Creditbook&sort=asccreditbook">Creditb ook</a></td> </tr> '; switch ($_GET['sort']) { case "ascsurname": usort($Mass, "compare1"); break 1; case "descsurname": usort($Mass, "compare2"); break 1; case "ascname": usort($Mass, "compare3"); break 1; case "descname": usort($Mass, "compare4"); break 1; case "asccreditbook": {usort($Mass, "compare5");}; break; case "desccreditbook": {usort($Mass, "compare6");}; break; case "ascbirthday": {usort($Mass, "compare7");}; break; case "descbirthday1": {usort($Mass, "compare8");}; break; } #Вывод списка группы в таблицу for ($i=0; $i<count($Mass); $i++) { echo '<tr>'; echo "<td>". $Mass[$i]['Surname'] . "</td>"; echo "<td>". $Mass[$i]['Name'] . "</td>"; echo "<td>". $Mass[$i]['Birthday'] . "</td>"; echo "<td>". $Mass[$i]['Creditbook'] . "<br />". "</td>"; echo '</tr>'; } echo '</table>'; ?> /* В файле sortitovka.php, функции выглядят следующим образом: function compare1 ($v1, $v2) { #asc if ($v1["Surname"] == $v2["Surname"]) return 0; return ($v1["Surname"] < $v2["Surname"])? -1: 1; } function compare2 ($v1, $v2) { #desc if ($v1["Surname"] == $v2["Surname"]) return 0; return ($v1["Surname"] < $v2["Surname"])? 1: -1; } /* ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2014, 05:55 |
|
||
|
Отсортировать кликом по заголовку столбца
|
|||
|---|---|---|---|
|
#18+
NniicckkСортировка по возрастанию для всех полей выполнена, как теперь реализовать по убыванию, подскажите. Необходимо так, чтобы при первом клике по полю (к примеру sirname) была сортировка по возрастанию, при втором по убыванию, при третьем снова по возрастанию, при четвёртом опять по убыванию... ?Шапку таблицы генерите динамически, указывая в формируемых ссылках направление сортировки. PS 1. Простая задача. Интереснее сделать сортировку "с историей" (полезно при наличии одинаковых значений в столбцах таблицы). 2. Странный подход. Откуда берется массив? Если реально задан жестко в коде, так при столь малых объемах данных можно пульнуть его целиком на клиента и там генерить таблицу с требуемой сортировкой. Если же массив формируется из запроса к базе данных - так в запросе и сортировать. 3. 8 (восемь!) колбек-функций сортировки - явный перебор. :-) Да, еще блок switch явно лишний - его можно выкинуть, заменив имена функций на значение параметра направления. Хотя, код очень прост для понимания и, в какой-то мере, для поддержки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2014, 06:33 |
|
||
|
|

start [/forum/topic.php?desktop=1&fid=23&tid=1462256]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
45ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
25ms |
get tp. blocked users: |
1ms |
| others: | 217ms |
| total: | 317ms |

| 0 / 0 |
