2013-04-12 36 views
0

我們有一個搜索框顯示如下,用戶可以輸入一個值,比如說1234 ABC street,點擊Search並顯示結果。如何顯示來自搜索框的結果或來自複選框的結果

<!--form1 --> 

     <div id="inputBG"> 
     <form id="searchForm" class="search_field" method="get" action=""> 
      <input name="searchBox" id="searchBox" value="3440 Mark Drive" /> 
      <button type="button" onclick="searchMap()"><img src="Viewer/images/search.png" alt="Search" /></button> 
      </form> 
     </div> 

這很好。

但是,如果用戶希望顯示多種類型的結果,用戶可以點擊名爲高級搜索的圖標。發生這種情況時,僅在下面顯示覆選框的窗體將在新窗口中打開。

<!--Form2 ---> 
      <div id="featuresDiv"> 
      <form id="featuresForm"> 
       <br/> 
       <input type="checkbox" name="srcoptions" onClick="checkAll(this.form,this)" checked>Check/Uncheck All<br> 
       <label><input type="checkbox" name="featType" checked value="Addresses">Addresses</label><br/> 
       <label><input type="checkbox" name="featType" checked value="Voter Precincts">Voter Precincts</label><br/> 
       <label><input type="checkbox" name="featType" checked value="Voter Precincts (Pending)">Voter Precincts (Pending)</label><br/> 
       <label><input type="checkbox" name="featType" checked value="Voting Polls">Voting Polls</label><br/> 
       <label><input type="checkbox" name="featType" checked value="Voting Polls (Pending)">Voting Polls (Pending)</label><br/> 
       <label><input type="checkbox" name="featType" checked value="Zip Codes">Zip Codes</label><br/> 
       <label><input type="checkbox" name="featType" checked value="Zoning Petitions">Zoning Petitions</label><br/> 
       <button type="button" onclick="searchMap()"><img src="MapViewer/images/magnifying_glass.png" alt="Search" /></button> 
      </form> 
      </div> 

用戶可以選擇檢查所有方框或只是幾個框。

當用戶點擊搜索時,應該顯示這些複選框的結果。

在使用複選框選項並且選中多個框的情況下,搜索框在搜索中變得不相關。

我已經嘗試了幾件事情,似乎沒有任何工作到目前爲止。

當我使用複選框選項,檢查不止一個選項,我得到自定義消息說,「您的搜索沒有結果」

這是我們嘗試的JavaScript這是爲了表明,當搜索是從搜索框(form1)或複選框(form2)。

然後,我們有PHP應該抓住所有搜索值(搜索框或複選框)到逗號分隔值。

這已經讓我們堅果了3天以上。

值得注意的是,searchbox的默認值是3440 Mark Street。

我真的難住了。

任何幫助,非常感謝。

// Construct query 
**$features = $_GET["featType"];** 

$tsql = "SELECT * FROM globes AS TBL 
    WHERE KEY_TBL.RANK > 0 
ORDER BY ListOrder, Name, TBL.RANK DESC"; 

回答

0

有關doGlobalSearch中發生的事件以及如何在PHP中處理數據的更多信息將會有所幫助。 Offhand我猜想,發送到PHP的數據格式化以及預期如何格式化存在一些差異。在黑暗中進行總攻,你有沒有試過​​?你確定需要引用個人價值嗎?

只是一個建議,但這裏是我會怎麼做:

  • 合併兩種形式融入其中。
  • 默認所有複選框在隱藏高級搜索div時取消選中(或禁用它們)。
  • 當顯示高級搜索div時,請檢查(或啓用)它們。
  • 將[]添加到每個複選框名稱的末尾,以便在提交表單時將(選中的)值作爲數組傳遞給PHP。

這種方式PHP將直接接收searchData和featTypes(如果有的話)在一起,你不必從PHP中的字符串中解析出featTypes。然後你需要做的所有事情就是提交表單並處理響應。同樣,這不知道後端發生了什麼,或者你有什麼控制權。

+0

很棒的建議@bstonehill, 我其實都試過。 首先,我們嘗試了將表單組合起來 - 這是最簡單的方法,但問題在於原始搜索表單位於iframe中,而高級搜索選項使事情不合適。 我們嘗試添加[]複選框的名稱,但它仍然無法正常工作。 正如您所見,複選框最初是隱藏的,複選框最初未被選中,但用戶希望默認選中複選框。 – Kenny

+0

Gotcha。我建議默認禁用複選框的唯一原因是爲了防止在複選框被隱藏時提交複選框。但是,在那種情況下,我真的不知道沒有更多的後端知識。你有人在處理PHP方面還是第三方?您是否使用Firebug或其他類似工具驗證了POST請求中發送的實際數據? – bstonehill

+0

其他人寫了PHP,但我粗略了我所做的更改。請在上面。 如果你看看上面的查詢,你會看到兩行。這: '$ =功能$ _GET [ 「featType」];' 這: '和FT_TBL.FeatType IN($功能)' – Kenny