Данный скрипт выводит все найденные результаты по маске из таблицы users. Как сделать так, чтобы при нажатии на кнопку Город, сортировал по алфавиту?
<div class="resultat"><table>
<tbody><tr><th>Город:</th><th>Компания:</th><th>Телефон:</th><th>Категория:</th><th>Дата:</th></tr> </div>
<?php
require 'scripts/connect.php';
$sql_select = "SELECT * FROM users";
$result = mysql_query($sql_select);
$row = mysql_fetch_array($result);
do
{
printf("<tr>
<td>" .$row['name'] . "</td>
<td>" .$row['last_name'] ."</td>
<td>" .$row['email'] . "</td>
<td>" .$row['facebook'] . "</td>
<td>" .$row['time'] . "</td>
</tr>");
}
while($row = mysql_fetch_array($result));
?></tbody></table>
Предположим, что Вы хотите сделать, чтобы при нажатии на ячейку шапки город, сортировка шла по столбцу city таблицы mysql. Тогда решение будет такое:
<div class="resultat"><table>
<tbody><tr><th><a href="page.php?sort=city" title="сортировать по полю город">Город</a>:</th><th>Компания:</th><th>Телефон:</th><th>Категория:</th><th>Дата:</th></tr> </div>
<?php
require 'scripts/connect.php';
$sqlAdd = (!empty($_GET["sort"]) && $_GET["sort"]=='city') ? " Order by city" : "";
$sql_select = "SELECT * FROM users".$sqlAdd;
$result = mysql_query($sql_select);
$row = mysql_fetch_array($result);
do
{
printf("<tr>
<td>" .$row['name'] . "</td>
<td>" .$row['last_name'] ."</td>
<td>" .$row['email'] . "</td>
<td>" .$row['facebook'] . "</td>
<td>" .$row['time'] . "</td>
</tr>");
}
while($row = mysql_fetch_array($result));
?>
</tbody></table>
Можно сортировать на стороне сервера, также можно на стороне клиента.
Чтобы сортировать на стороне сервера необходимо на сервер передать признак критерия сортировки и исходя от того признака составить sql выражение. Например, при нажатии на кнопку Город запросом GET передается параметр sort=city. А скрипт измениться примерно так:
$orderBy = '';
if (isset($_GET['sort'])) {
switch ($_GET['sort']) {
case 'city': $orderBy = ' order by `city`'; break;
case '-city': $orderBy = ' order by `city` desc'; break;
}
}
$sql = 'select * from `users`' . $orderBy;
Если сортировка производится на стороне клиента тогда можно использовать готовые скрипты типа https://datatables.net/examples/basic_init/table_sorting.html.
Как всегда у обеих методов есть плюсы и минусы. Например, если кол-во записей большое число, и данные загружаются постранично, тогда придется сортировать на стороне сервера.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Созрел такой вопрос: Есть форма, пользователь вводит данные, форма передаёт на обработчик, например sendphp, тот в свою очередь соединяется с mySql и вносит...
пытаюсь выполнить через ajax код: