AntonBrock
@AntonBrock
screen light

Как можно сортировать эту таблицу по клике заголовка?

Нужно просто, по убыванию или возрастанию. Пытался найти, везде старые ресурсы (2010-2014), совсем мало понимаю в php и бд, буду рад помощи! Спасибо!
<?php
$db_host = "127.0.0.1";
$db_name = "test_codez";
$db_user = "root";
$db_pass = "";

$db = mysqli_connect ($db_host, $db_user, $db_pass, $db_name) or die ("Невозможно подключиться к БД");

?>


<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
  <table>
    <?php
      $sql = "SELECT * FROM test_table2";

      echo "<table>";
      echo "<table><tr><th>Alphabetic</th><th>Numeric</th><th>Date</th><th>Unsortable</th></tr>";
      $sql = mysqli_query($db, "SELECT * FROM test_table2");
      while ($result = mysqli_fetch_array($sql))
      {
      echo "<tr><td>".$result['Alphabetic']."</td><td>".$result['Numeriс']."</td><td>".$result['Date']."</td><td>".$result['Unsortable']."</td></tr>";
      }
      echo "</table>";
    ?>
  </table>
</body>
</html>

5c420fc57f497977103230.jpeg
  • Вопрос задан
  • 385 просмотров
Решения вопроса 1
Stalker_RED
@Stalker_RED
Именно на php?
Можно добавить ссылки в заголовки, и при клике по этой ссылке добавлять какой-то GET-параметр с именем или номером столбца, и по этому столбцу сортировать перед выводом.

Еще лучше - вместо сортировки на уровне PHP добавить ORDER BY в SQL-запрос.

Еще лучше сделать сортировку на клиенте, без перезагрузки страницы, на js.

Можно взять что-то готовое, типа datatables.net.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
atomrus1993
@atomrus1993
1) допустим кидаем на заголовки ссылку (текущая урла + название параметра + asc/sort) при клике должно меняться например:
example.com/phone/?field=Numeric&sort=asc
example.com/phone/?field=Date&sort=asc

в php
if (isset($_GET['sort'])) ...
Пример
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
  <table>
    <?php
	
	$field = 'Alphabetic';
	$sort = 'DESC';
	
	if (isset($_GET['sort']) && isset($_GET['field'])) {
		
		$getSort = $_GET['sort'];
		$getField = $_GET['field'];
		
		if ($getSort == 'desc' || $getSort == 'asc') {
			$field = $getField;
			$sort = $getSort;
		}
	}


	?>
	  <a href="?field=Numeric&sort=desc">Numeric</a> <br/>
	  <a href="?field=Numeric&sort=asc">Numeric</a>
	<?
	$sql = "SELECT * FROM test_table2 ORDER BY $field $sort";

	echo "<table>";
	echo "<table><tr><th>Alphabetic</th><th>Numeric</th><th>Date</th><th>Unsortable</th></tr>";
	$sql = mysqli_query($db, $sql);
	while ($result = mysqli_fetch_array($sql))
	{
	echo "<tr><td>".$result['Alphabetic']."</td><td>".$result['Numeriс']."</td><td>".$result['Date']."</td><td>".$result['Unsortable']."</td></tr>";
	}
	echo "</table>";
    ?>
  </table>
</body>
</html>


Должно работать)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы