[英]Selecting all values if nothing is selected from drop-down list
在將表單的下拉值提交到另一頁后,我從中生成數據。
<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 Column,並帶有我提到的值。
如果我選擇家庭從火車站和部分 浴室它工作正常,但如果我從站選擇全部 浴室從第然后我得到一個錯誤,因為我沒有在列的值的所有命名車站的記錄。 相反,我有價值觀家庭和辦公室的記錄(由所有我的意思是家庭和辦公室都應該生成)。
我的問題是,當我從下拉列表中選擇全部時,如何生成兩個電台的詳細信息。
在我的details.php頁面中,我有:
$execItems = $conn->query("SELECT StationName, SectionName FROM profiles WHERE Station = '$Station' AND Section = '$Section'");
如果我從Station選擇Home或Office ,則工作正常,但如果從Station選擇All ,則它將不起作用,因為Station列中All的名稱沒有任何值( 總之,我的意思是Home和Office應該是選擇)。
雖然動態編寫的WHERE子句將是更好的方法,但快速解決方案是調整WHERE子句以解決從表單傳遞的ALL
。
WHERE (station = '$Station' OR '$Station' = 'ALL') AND (Section = '$Section' OR '$Section' = 'ALL')
如果有人要選擇, station
為表單值ALL
和值Section
表單的Dining
設置位置,則此WHERE子句變為:
WHERE (station = 'ALL' or 'ALL' = 'ALL') AND (Section = 'Dining' or 'Dining' = All)
該第一個OR將生成TRUE
因為'All' = 'All'
,而第二個OR將在測試的記錄具有Dining
的section
值的情況下返回TRUE
。
您需要基於這樣的輸入來構建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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.