错误导致它无法在ASC/DESC之间翻转,我90%确定它就在这几行之内。我想我需要有一个"第一个"循环来"保存"$sort以便稍后翻转。但是当我这样做时,它会导致数组错误。
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变量的列的示例。
编辑:为了节省时间,$order不是问题。每个列名都已成功按列排序。
if(isset($_GET['order'])){
$order = $_GET['order'];
} else {
$order = 'id';
}
做:
$sort = ($sort == 'DESC') ? 'ASC': 'DESC';
并在查询字符串键/值对之间只写入一个"&":
<a ... href="?order=id&sort=$sort">
并在"href"中正确应用 PHP 代码。否则,您也将$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";
//...
答案:
您的最终代码将是这样的:
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&sort=DESC 或ASC并从链接中删除一个&
现在是这样的:https://solenoidal-slate.000webhostapp.com/?order=id&&sort=$sort