我正在尝试使用$_GET
来获取一个参数,这样,如果它选择了一个表标题,它将遍历我的if-else语句并进行相应的排序。
然而,我并没有取得多大成功。我先把它设置为按ID升序排序,我只是通过按降序点击ID进行测试。任何建议都是有用的。
if(!isset($_SESSION['userid']))
{
header("Location: login.php");
exit();
}
try
{
$sql = 'SELECT * FROM members ORDER by ID';
$result = $pdo->query($sql);
if($x == 2)
{
$sql = 'SELECT * FROM members ORDER by ID DESC';
$result = $pdo->query($sql);
}
}
catch (PDOException $e)
{
echo 'Error fetching results: ' . $e->getMessage();
exit();
}
while ($row = $result->fetch())
{
$registrations[] = array(
'ID' => $row['ID'],
'email' => $row['email'],
'fname' => $row['fname'],
'mi' => $row['mi'],
'institution' => $row['institution'],
'lname' => $row['lname'],
'uname' => $row['uname']);
}
echo '<table>';
echo '<thead><tr><th>Options</th><th>ID<a href="userlist.php?x=1">
▴</a> <a href="userlist.php?x=2">▾</a></th><th>Name
<ahref="userlist.php?x=3">▴</a><a href="userlist.php?x=4"> ▾
</a></th><th>Institution <a href="userlist.php?x=5">▴</a>
<a href="userlist.php?x=6">▾</a></th><th>Username
<a href="userlist.php?x=7">▴</a>
<a href="userlist.php?x=8">▾</a></th><th>Email
<a href="userlist.php?x=9">▴</a>
<a href="userlist.php?x=10">▾</a></th></tr></thead>';
if($_SESSION['status'] == 1)
{
foreach ($registrations as $user)
{
echo '<tbody><tr><td><a href="userdetails.php?x=' .$user['ID']
.'">VIEW</a> </td>
<td>'.$user['ID'].'</td>
<td>'.$user['lname'].", ". $user['fname']." ". $user['mi'].".".'</td>
<td>'.$user['institution'].'</td>
<td>'.$user['uname'].'</td>
<td>'.$user['email'].'</td> </tr> </tbody>';
}
}
else
{
echo '><tr><td><a href="userdetails.php?x='
.$_SESSION['userid'].'">VIEW</a></td> <td>'. $_SESSION['userid'].' </td>
<td>'.$_SESSION['lname'].", ". $_SESSION['fname']." ".
$_SESSION['mi'].".".'</td><td>'.$_SESSION['institution'].'</td>
<td>'.$_SESSION['uname'].'</td><td>'.$_SESSION['email'].'</td></tr>';
}
echo '</table> ';
$x = $_GET['x'];
?>
您说过您初始化了$x=1。但是,除非您执行$x = (int)$_GET["x"]
,否则该值将保持不变,因此您将再次构建相同的页面。。。。
此外,我希望您不会在那里用不同的SQL语句构建SELECT结构——这将是许多不必要的代码应用。我会有一个$x
的各种值的键数组,然后从中获取所需的键。。。
对HTML表进行排序的最简单方法是使用类似jquery tablesorter的东西。有关它的更多信息和示例,请访问@http://tablesorter.com/docs/
你需要导入这些脚本文件
<script type="text/javascript" src="/path/to/jquery-latest.js"></script>
<script type="text/javascript" src="/path/to/jquery.tablesorter.js"></script>
然后添加一个具有表id 的类,如下所示
<table id="myTable" class="tablesorter">
然后触发脚本中的表排序功能
$(document).ready(function()
{
$("#myTable").tablesorter();
}
);
看起来应该可以工作。您还可以对$注册进行排序
将ID添加到$registrations密钥:
$registrations[$row['ID']] = array(
'ID' => $row['ID'],
'email' => $row['email'],
'fname' => $row['fname'],
'mi' => $row['mi'],
'institution' => $row['institution'],
'lname' => $row['lname'],
'uname' => $row['uname']);
然后排序:
if($x == 2){
krsort($registrations); // reverse sort DESC
}
else{
ksort($registrations);
}
您可能想在$x排序上尝试反向逻辑:
if($x != 2)
{
$sql = 'SELECT * FROM members ORDER by ID DESC';
}
else{
$sql = 'SELECT * FROM members ORDER by ID ASC';
}
$result = $pdo->query($sql);
您可能有类型问题:
if($x == '2')
或
if (intval($x) == 2)
使默认排序为零并键入get:
$x = intval($_GET['x']);
如果GET中没有x值,这将使其为零并消除键入问题。
然后针对您的各种类型:
$sort[0] = 'ORDER BY `ID` ASC';
$sort[2] = 'ORDER BY `ID` DESC';
$sort[3] = ORDER BY `???`
$sql = "SELECT * FROM members $sort[$x]";