0

管理者がユーザーを表示できるようにするユーザーデータベースがあります。管理者がユーザーをさまざまなフィールドで並べ替えられるようにしたいと思います。(例:名または名前)。

私の問題:
それはソートされないということです。ドロップダウンボックスと送信ボタンを使用してそれを実行しようとしています。phpMyAdminでSQLを試し、ステートメントが正しいことを確認しました。また、mysqlエラーではないことを確認するためにまたはdieを追加しました。ソートされていないだけでエラーは発生しません。また、ドロップダウンをエコーアウトして、正しい値が変数に追加されていることを確認してみました。

コード: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";
}

ありがとう

4

1 に答える 1

3

コメントは正しいです。'$sortby'の代わりにバックティック`$sortby`を使用する必要があります

その理由は、MySQLで値をラップするために一重引用符が使用されているためですが、これは必要なことではありません。テーブル列の名前を渡すので、テーブル列名をラップするために使用されるため、バックティックを使用します。

于 2012-07-05T17:43:10.563 に答える