我有一个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 。)。
答案 0 :(得分:0)
虽然动态编写的WHERE子句是更好的方法,但快速解决方法是调整WHERE子句以考虑从表单传入的ALL
。
WHERE (station = '$Station' OR '$Station' = 'ALL') AND (Section = '$Section' OR '$Section' = 'ALL')
如果有人选择station
表单值ALL
和Dining
表单的值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