PHP - 使用下拉菜单对列表进行排序

Phi*_*hil 2 html php sql-order-by drop-down-menu

我坚持这一点,我整个星期都在通过PHP的速成课程制作一个假的亚马逊像网站!我想使用下拉菜单订购我的餐桌,但无法弄清楚如何!我知道SQL很容易,但我尝试这样做的方法如下:

例如,设置变量

$query = "SELECT bookname, bookauthor, bookpub, bookisbn
                FROM booktable
                ORDER BY bookname ASC";

$query2 = "SELECT bookname, bookauthor, bookpub, bookisbn
            FROM booktable
            ORDER BY bookauthor ASC";
Run Code Online (Sandbox Code Playgroud)

然后我有我的形式=

<form name="sort" action="products.php" method="post">
<select name="order">
   <option value="choose">Make A Selection</option>
   <option value="title">Title</option>
   <option value="author">Author</option>
   <option value="publisher">Publisher</option>
   <option value="isbn">Book ISBN-10</option>
</select>
<input type="submit" value=" - Sort - " />
</form>
Run Code Online (Sandbox Code Playgroud)

现在我不能这样做,

我设置了变量:

$sort = $_POST['order']; 
Run Code Online (Sandbox Code Playgroud)

所以,无论下拉菜单的价值如何,都将被赋值给变量$ sort .....(是吗?)

那么我想说,如果$ sort的值与我们说'作者'的价值相同而不是$ query = $ query2但是我不知道怎么说没有XAMPP提供的大错误!

我希望这一切都有意义,我尝试实现它的方法接近正确

谢谢

Ava*_*che 5

要排序我会做以下事情:

更改选项值以匹配表中的列名设置排序选项,如果他们没有选择任何内容,则包括默认值:

$sort=$_POST["order"]!="choose"?$_POST["order"]:"bookname";
Run Code Online (Sandbox Code Playgroud)

然后只需设置您的查询使用:

ORDER BY ".mysql_real_escape_string($sort)." ASC
Run Code Online (Sandbox Code Playgroud)

这样,您只需要一个查询,而不是每个案例的查询.