簡體   English   中英

如果未從下拉列表中選擇任何內容,則選擇所有值

[英]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數據庫中具有StationSection Column,並帶有我提到的值。

如果我選擇家庭火車站部分 浴室它工作正常,但如果我從選擇全部 浴室然后我得到一個錯誤,因為我沒有在列的值的所有命名車站的記錄。 相反,我有價值觀家庭辦公室的記錄(由所有我的意思是家庭辦公室都應該生成)。

我的問題是,當我從下拉列表中選擇全部時,如何生成兩個電台的詳細信息。

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

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

如果我從Station選擇HomeOffice ,則工作正常,但如果從Station選擇All ,則它將不起作用,因為Station列中All的名稱沒有任何值( 總之,我的意思是HomeOffice應該是選擇)。

雖然動態編寫的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將在測試的記錄具有Diningsection值的情況下返回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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM