如果从下拉列表中选择任何内容,则选择所有值

时间:2017-04-17 19:56:12

标签: php mysql

我有一个from,在将表单的下拉值提交到另一个页面后生成数据。

<form method="post" action="details.php">

<select name="Station">
<option value="All">All</option>
<option value="Home">Home</option>
<option value="Office">Office</option>
</select>

<select name="Section">
<option value="All">All</option>
<option value="Living">Living Room</option>
<option value="Dinning">Dinning Room</option>
<option value="Bathroom">Bathroom</option>
</select>

<input type="submit">
</form>

根据以上表格,我在MySQL数据库中有 Station Section 列,其中包含我提到的值。

如果我从部分中选择主页并从部分选择浴室,它会正常工作,但如果我选择< em>所有来自浴室来自然后我收到错误,因为我没有带值的记录名为电台的列中的全部。相反,我有值 Home Office 的记录(通过 All 我的意思是 Home Office 应该生成。)

我的问题是当我从下拉列表中选择 All 时如何生成两个电台的详细信息。

在我的details.php页面中,我有:

$execItems = $conn->query("SELECT StationName, SectionName FROM profiles WHERE Station = '$Station' AND Section = '$Section'");

如果我从电台中选择主页 Office ,但是如果我从<选择全部,它可以正常工作strong>站然后它将无效,因为列中的所有的名称没有值(按全部我的意思是应该选择 Home Office 。)。

2 个答案:

答案 0 :(得分:0)

虽然动态编写的WHERE子句是更好的方法,但快速解决方法是调整WHERE子句以考虑从表单传入的ALL

WHERE (station = '$Station' OR '$Station' = 'ALL') AND (Section = '$Section' OR '$Section' = 'ALL')

如果有人选择station表单值ALLDining表单的值Section,则此WHERE子句将变为:

WHERE (station = 'ALL' or 'ALL' = 'ALL') AND (Section = 'Dining' or 'Dining' = All)

如果正在测试的记录的TRUE值为{{1>,那么第一个OR将生成'All' = 'All'因为TRUE而第二个将返回section }}。

答案 1 :(得分:0)

你需要根据这样的输入构建dynamic where clause

<?php

 $where ="1=1";

 if(isset($_POST['Station']) && !empty($_POST['Station']) && $_POST['Station'] !='All')
  {
      $where .=" and station = '$Station'";
  }

  if(isset($_POST['Section']) && !empty($_POST['Section']) && $_POST['Section'] !='All')
  {
      $where .=" and  section= '$section'";
  }

  "SELECT StationName, SectionName FROM profiles WHERE".$where