2011-09-11 73 views
1

當用戶在下拉列表中進行選擇時,我將如何搜索SQL數據庫。我知道如何將文本更改/添加到使用JavaScript的區域,而不是使用SQL搜索。下拉選擇 - >搜索數據庫

理想情況下,我不想在這個過程中改變頁面,因爲我認爲他們不會在下拉菜單中堅持一個選項。

提前歡呼。 =)

+0

你使用什麼後端? ASP.NET,MVC,Django,PHP – TMB

+0

對不起,PHP。 – Crimsonfox

回答

2

您必須將onchange事件偵聽器添加到下拉框中。當用戶選擇一個選項時,AJAX(XmlHttpRequest)應發送到服務器。例如,服務器端腳本(例如PHP頁面)應該解析參數(在檢查之後)。

當這些參數已被檢查時,它們應該是escapedthis reason。執行搜索查詢,解析結果並將輸出發送回客戶端(用戶,瀏覽器)。

相關鏈接:

2

你應該看看爲此實現Ajax。

這裏有一個簡單的例子,教程利用下拉列表,從上選擇一個數據庫獲取信息,而無需改變頁面:)

http://www.w3schools.com/php/php_ajax_database.asp

你也應該考慮使用jquery爲您的Ajax請求作爲在下面的答案中說明。 (用更少的代碼做更多)。另請參閱: http://15daysofjquery.com/quick-and-dirty-ajax/14/一個簡單的jQuery Ajax教程。

+0

請參閱:http://w3fools.com/#road-ahead – TMB

+1

@TMB:很高興知道:)但是我相信這將幫助他理解實現ajax的基礎知識,因爲它似乎以前沒有。據說,我不會推薦從任何教程網站複製和粘貼代碼,而不進行徹底的審查。 –

+0

@TMB + Richard除了缺乏SQL注入保護之外,w3Schools示例還會有什麼錯誤?我熱衷於找出不該做的事情,就像我想做的事一樣。 =) – Crimsonfox

0

沒有更多的信息我只能真正給你下面的指導。它使用jQuery加載函數將一個頁面的內容放入一個元素中。請注意,.load不能跨域使用。

$("#searchButton").live("click", function() { 
    $("#results").load("/SearchResults.php?s=" + $("#searchBox").val()); 
}); 

還要注意的是,你應該使用的東西過濾掉HTML標記,以防止SQL注入,以及採取其他措施。

1

您呈現頁面之前,請確保你做一個搶要從數據庫提交的信息。

select distinct NAME, ID 
from tableName 

您可以使用此處獲得的信息生成下拉框的html。包括一些效果

<select onchange="doAction(this.value);"> 
    <option value="userID">userName</option> 
    <option value="userID">userName</option> 
    <option value="userID">userName</option> 
    ... 
</select> 

然後執行AJAX request回到您的網站。從第二個查詢中獲取信息到數據庫,並返回所需的信息。當你執行你的第二個查詢時(並且一般來說)你必須保護自己免受注入攻擊媒介的攻擊。最好的開始是確保您已正確編碼(HTML,SQL)。

相關問題