选择框选项过滤器


Select Box option filter

下面的代码是错误的吗?

对于显示数据的不同选择查询,我有三个选项选择框。我似乎不能使它工作。表单是通过一个名称和值为submit的提交按钮提交的。我还需要勾选选择框的名称吗?

if(isset($_POST['submit'])) {
  if($_POST['value']=='all_records') {
    $sql = "SELECT *
        FROM contact_list
        ";
  }
  elseif($_POST['value']=='surname_desc') {
    $sql = "SELECT *
            FROM contact_list
            ORDER BY Surname DESC";
  }
  else{
    $sql = "SELECT *
            FROM contact_list
            ORDER BY FirstName ASC";
  }
$results = mysqli_query($dblink, $sql) or die (mysqli_error());
}

我的形式:

  <form class="filteroption" action="" method="post">
          <select class="select" name="select">
            <option value ="all_records" selected="selected">All  records</option>
            <option value ="surname_desc" selected="selected">Surname  Desc</option>
            <option value ="firstname_asc" selected="selected">First Name   Asc</option>
          </select>
            <input  class="" type="submit" name="submit" value="submit">
          </form>

查询不工作,改变我的表的内容。我用foreach等从$results回显到表中,这似乎与页面的默认预查询视图一起工作得很好…

$_POST['value']替换为$_POST['select']。您应该使用选择标签的名称来比较这些值。

我还看到你在选择框中为所有选项添加了selected="selected"

选择的名称不是"value"而是"select":

if(isset($_POST['submit'])) {
  if($_POST['select']=='all_records') {   //<=========== 'select'
    $sql = "SELECT *
        FROM contact_list
        ";
  }
  elseif($_POST['select']=='surname_desc') {   //<=========== 'select'
    $sql = "SELECT *
            FROM contact_list
            ORDER BY Surname DESC";
  }
  else{
    $sql = "SELECT *
            FROM contact_list
            ORDER BY FirstName ASC";
  }
$results = mysqli_query($dblink, $sql) or die (mysqli_error());
}