Php 根据下拉列表中选定的筛选器列出数据库值

Php 根据下拉列表中选定的筛选器列出数据库值,php,mysql,database,filtering,Php,Mysql,Database,Filtering,如何筛选下拉选项以列出表格条目 HTML筛选器示例: <form action="filter.php" method="post"> <select name="filter"> <option>FILTER:</option> <option value="alphabetical">ASC</option> <option value="date">Date</option

如何筛选下拉选项以列出表格条目

HTML筛选器示例:

<form action="filter.php" method="post">
  <select name="filter">
    <option>FILTER:</option>
    <option value="alphabetical">ASC</option>
    <option value="date">Date</option>
  </select>
</form>
列出值的基本HTML:

echo '<h1>'.$name.'</h1>
      <h1>'.$date.'</h1>';
echo'.$name'
“.$日期。”;
第二个过滤器(日期)应进行选择,列出所有带有ASC日期的条目。第二个(按字母顺序)应该进行选择,只按ASC列出所有名称的条目


你知道MySQL SELECT在这种情况下是如何工作的吗?

假设表中的字段名是name和date,那么这些应该可以工作

SELECT * FROM table ORDER BY name ASC
SELECT * FROM table ORDER BY date ASC

我会这样做

HTML:


过滤器:
ASC
日期
PHP


html:

filter.php:


注意:不要忘记包含jquery库。

在filter.php中获取$\u POST['filter']值,使用它在php脚本上创建一个开关,并为每个参数创建一个不同的查询,或者将“ORDER BY x”语句连接到一个简单的查询,如SELECT*FROM table。没有重定向到filter.php的方法吗?是的,通过使用javascript/jQueryAjax请求,您可以在服务器端执行筛选并将数据返回到客户端,而无需执行任何重定向。当我选择一个选项时,比如“字母顺序”,我的列表没有任何变化,我想这是因为没有“动作”。我将编辑代码。我建议您在这里使用ajax,而不是
form
,它在不刷新页面的情况下显示消息。我使用了以下方法:现在下拉筛选器尊重我的选择,但我得到了mysqli错误:mysqli_query()至少需要2个参数,1个参数再次给出,笑话。我需要把SELECT放在一个表单中吗?嘿,我刚刚想:我需要将我的数组包含在一个不同的文件中。谢谢你,开玩笑!没有你的帮助,这件事办不成。
SELECT * FROM table ORDER BY name ASC
SELECT * FROM table ORDER BY date ASC
<form action="filter.php" method="post">
  <select name="filter">
    <option>FILTER:</option>
    <option value="alphabetical">ASC</option>
    <option value="date">Date</option>
  </select>
</form>
<?php
    switch($_POST['filter']){
        case "alphabetical":
           $field = "name";
           break 1;
        case "date":
           $field = "date";
           break 1;
    }

 $mysqli = new mysqli("localhost", "my_user", "my_password", "world");
 $stmt = $mysqli->prepare("SELECT * FROM table ORDER BY ? ASC");
 $stmt->bind_params("s",$field);
 $stmt->execute();

 //ETC
?>
<select name="filter" onchange="filter(this.value)">
  <option>FILTER:</option>
  <option value="alphabetical">ASC</option> 
  <option value="date">Date</option> 
</select>
<div id="results"></div>// store the results here
function filter(item){
$.ajax({
type: "POST",
url: "filter.php",
data: { value: item},
success:function(data){
  $("#results").html(data);
}
});
}
include "connection.php";  //database connection
$fieldname = $_POST['value'];
 if($fieldname=="alphabetical"){
  // if you choose first option
  $query1 = mysqli_query("SELECT * FROM table ORDER BY name ASC"); 
  // echo the results
  }else{
  // if you choose second option
  $query1 = mysqli_query("SELECT * FROM table ORDER BY date ASC");
  // echo the results
}