无法让我的用户数据库进行排序。

时间:2012-07-05 17:27:27

标签: php mysql

我有一个用户数据库,我希望管理员能够查看用户。我希望管理员能够按不同的字段对用户进行排序。 (例如,名字或姓氏)。

我的问题:
这是不会排序的。我试图使用下拉框和提交按钮来做到这一点。我已经尝试过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";
}

由于

1 个答案:

答案 0 :(得分:3)

评论是正确的,您应该使用后退标记`$ sortby`而不是'$ sortby'

原因是 - 单引号用于在MySQL中包装值,这不是你想要的。您正在传递表列的名称,因此您使用反向标记,因为它们用于包装表列名称。