Столбец сортировки ASC / DESC: SQL / переполнение стека

Есть ошибка, заставляющая его не переключаться между ASC / DESC, и я на 90% уверен, что он находится в этих нескольких строках … Я думаю, что мне нужен «первый» цикл, который «сохранит» сортировку $, чтобы она переворачивалась позже. Но когда я делаю это, это вызывает ошибку массива.

SQL более чем корректен …
Я НЕ беспокоюсь о SQL-инъекциях / PDO / безопасности, так как я добавляю этот код позже.

Полная ссылка: https://solenoidal-slate.000webhostapp.com/

if(isset($_GET['sort'])){
$sort = $_GET['sort'];
} else {
$sort='ASC';
}

$sort == 'DESC' ? $sort ='ASC': $sort='DESC';
$query = "SELECT * FROM employees ORDER BY $order $sort";
$results = mysqli_query($con, $query); ?>

<th><a class="column_sort" id="id" href='?order=id&sort=$sort'>ID<span class="glyphicon glyphicon-sort-by-alphabet"></span></a></th>

Эта строка выше является примером столбца, который «получает» переменную $ sort.

РЕДАКТИРОВАТЬ: Чтобы сэкономить время, $ порядок не проблема. Каждое имя столбца сортируется по столбцу успешно.

  if(isset($_GET['order'])){
$order = $_GET['order'];
} else {
$order = 'id';
}

2

Решение

Делать:

$sort = ($sort == 'DESC') ? 'ASC': 'DESC';

и пиши только один&»между парами ключ / значение строки запроса:

<a ... href="?order=id&sort=$sort">

и правильно применить php-код в «href». В противном случае вы будете иметь $sort как HTML-код тоже.

Итак, я бы сделал это, например, так:

<?php

$order = isset($_GET['order']) ? $_GET['order'] : 'id';
$sort = isset($_GET['sort']) ? $_GET['sort'] : 'ASC';

$sort = ($sort == 'ASC') ? 'DESC': 'ASC';

$query = "SELECT * FROM employees ORDER BY $order $sort";
$results = mysqli_query($con, $query); ?>
//....
?>

<th>
<a class="column_sort" id="id" href="?order=id&sort=<?php echo $sort; ?>">
ID<span class="glyphicon glyphicon-sort-by-alphabet"></span>
</a>
</th>

Или вы можете использовать это напрямую:

<?php

//...
$sort = ((isset($_GET['sort']) ? $_GET['sort'] : 'ASC') == 'ASC') ? 'DESC' : 'ASC';

$query = "SELECT * FROM employees ORDER BY $order $sort";
//...
1

Другие решения

Ответ:

Ваш окончательный код будет примерно таким:

if (isset($_GET['order'])) { // Check $_GET['order'] is in the predefined array
$order = $_GET['order'];
} else {
$order = 'id';
}

if(isset($_GET['sort'])) { // Preferably you can check this also in_array($_GET['sort'], ['ASC', DESC])
$sort = $_GET['sort'];
} else {
$sort = 'ASC';
}

$query = "SELECT * FROM employees ORDER BY $order $sort";
$results = mysqli_query($con, $query);

Обновить:

Ваша ссылка должна быть изменена,

Так должно быть http://solenoidal-slate.000webhostapp.com/?order=id&сортировать = DESC или ASC и удалить один & по ссылке

Теперь это так: https://solenoidal-slate.000webhostapp.com/?order=id&&сортировать = $ сортировать

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector