我有一个用户数据库,我希望管理员能够查看用户。我希望管理员能够按不同的字段对用户进行排序。 (例如,名字或姓氏)。
我的问题:
这是不会排序的。我试图使用下拉框和提交按钮来做到这一点。我已经尝试过phpMyAdmin中的Sql来确保语句是正确的。我还添加了一个或者死,以确保它不是一个mysql错误。我没有错误它只是没有排序。我也尝试回显下拉列表以确保将正确的值添加到变量中。
代码: HTML下拉列表
<form action="View_users.php" enctype="multipart/form-data" name="sort" id="sort" method="post" align="right">
<label>
<select name="sortdropdown" id="sortdropdown">
<option value="<?php echo $sortby; ?>"><?php echo $sortby; ?></option>
<option value="name">First Name</option>
<option value="surname">Surname</option>
<option value="email">Email</option>
<option value="signupdate">Date</option>
</select>
</label>
<label>
<input type="submit" name="button" id="button" value="Sort" />
</label>
</form>
逻辑:
$sortby = "";
if (!isset($_POST['sortdropdown'])) {
$sortby = "surnname";
}else{
$sortby = mysql_real_escape_string($_POST['sortdropdown']);
}
// This block grabs the whole list for viewing
$product_list = "";
$counter = 0;
$sql = mysql_query("SELECT * FROM users ORDER BY '$sortby' ASC") or die(mysql_error());
$productCount = mysql_num_rows($sql); // count the output amount
if ($productCount > 0) {
while($row = mysql_fetch_array($sql)){
$counter++;
$id = $row["id"];
$email = $row["email"];
$name = $row["name"];
$surname = $row["surname"];
$lastlogin = $row["lastlogin"];
$signupdate = $row["signupdate"];
if (is_float($counter/2)) {$class = "#CCCCCC"; }
else {$class = "white";}
$product_list .= '<tr bgcolor="'.$class.'">
<td>'.$surname.'</td>
<td>'.$name.'</td>
<td>'.$email .'</td>
<td><a href="user.php?id=' . $id . '">View More</a></td></tr>';
}
} else {
$product_list = "There are no users in the system yet";
}
由于
答案 0 :(得分:3)
评论是正确的,您应该使用后退标记`$ sortby`而不是'$ sortby'
原因是 - 单引号用于在MySQL中包装值,这不是你想要的。您正在传递表列的名称,因此您使用反向标记,因为它们用于包装表列名称。