第一部分代码应该正确,因为当您单击列时网址会发生变化:
$sort="";
$order='id';
$records=mysqli_query($con, "SELECT * FROM employees ORDER by $order $sort");
if(isset($_GET['sort'])){
$sort = isset($_GET['sort']) ? $_GET['sort'] : 'ASC';
$sort = ($sort == 'ASC') ? 'DESC': 'ASC';
debug_to_console( "Get_sort triggered");
} else{
$sort='asc';
}
if(isset($_GET['order'])){
$order = $_GET['order'];
debug_to_console( "Get_order triggered");
}
第二部分错误可能很有可能?
<?php while ($row = mysqli_fetch_array($records)) { ?>
<tr>
<td><?php echo $row['id']; ?> </td>
<td><?php echo $row['first_name']; ?> </td>
<td><?php echo $row['last_name']; ?> </td>
<td><?php echo $row['position']; ?> </td>
<td class="hidden-xs"><?php echo $row['date']; ?> </td>
<td class="hidden-xs"><?php echo $row['updated']; ?> </td>
<td>
<a href="edit.php?edit=<?php echo $row['id']; ?>" name="edit" class="button green_btn"><span class="glyphicon glyphicon-pencil"> </a>
<a href="index.php?del=<?php echo $row['id']; ?>" name="del" class="button del_btn" onclick="return confirm('Are you sure you want to delete this item?');"><span class="glyphicon glyphicon-trash"></span> </a>
</td>
</tr>
<?php
}
?>
编辑:没有错误(据我所知)。没有什么可以通过$ order排序。相反,表格保持不变,并按ID排序。
下面的$ order和$ sort会导致整个表无效。
$order = isset($_GET['order']) ? $_GET['order'] : 'id';
$sort = isset($_GET['sort']) ? $_GET['sort'] : 'ASC';
$sort = ($sort == 'ASC') ? 'DESC': 'ASC';
$records=mysqli_query($con, "SELECT * FROM employees ORDER by $order $sort");
答案 0 :(得分:3)
在确定$ sort的值之前,您正在执行查询。
答案 1 :(得分:1)
你有两个问题。
首先,在根据$order
参数设置$sort
和$_GET
之前,您正在执行查询。您需要将查询移动到底部。
其次,您将$order
设置为与参数相反的位置。
另外,为了防止SQL注入,您应该验证order
参数。
$sort="";
$order='id';
if(isset($_GET['sort'])){
$sort = isset($_GET['sort']) ? $_GET['sort'] : 'ASC';
$sort = ($sort == 'ASC') ? 'ASC': 'DESC';
debug_to_console( "Get_sort triggered");
} else{
$sort='asc';
}
if(isset($_GET['order'])){
$valid_order = array('id', 'name', 'dept');
$order = in_array($_GET['order'], $valid_order) ? $_GET['order'] : 'id';
debug_to_console( "Get_order triggered");
}
$records=mysqli_query($con, "SELECT * FROM employees ORDER by $order $sort");