选择Box选项过滤器

时间:2016-06-28 20:56:30

标签: php mysqli

以下代码是否有错?

我有一个三个选项选择框,用于显示数据的不同选择查询。我似乎无法让它发挥作用。 提交表单时带有一个提交按钮,其名称和值为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汇总到thr表中,这似乎与页面的默认预查询视图一起工作...

2 个答案:

答案 0 :(得分:2)

在所有条件下,将$_POST['value']替换为$_POST['select']。 您应该使用select标记的名称来比较值。

此外,我看到您为选择框中的所有选项添加了selected="selected"。它应该只添加一个选项。

答案 1 :(得分:2)

您的选择名称不是“值”,而是“选择”:

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());
}