2013-05-04 139 views
1

我的應用程序有一個高級搜索表單,它使用Ajax/PHP來查詢數據庫。我的表單字段類似於:Name,ID,Level,Class高級搜索表單?

如果用戶輸入Levelclass它將顯示所有具有相同級別和級別的學生。

現在我想改進它以允許用戶在AND/OR之間進行選擇,例如他想要搜索具有相同名稱的學生,但不管是在a級還是a級。

select * from table where name like name AND (level == level OR class == class) 

什麼是最好的方法來實現這一目標?是否有任何技術或類似的Solr和Hibernate搜索?

+0

Javasctipt與查詢數據庫無關。如果有的話,你的JavaScript將簡單地觸發對數據庫的查詢。 – Lix 2013-05-04 22:56:49

+0

這就是說,你的問題是廣泛的方式來回答它目前的形式。你沒有提及任何有關你的服務器端技術的東西,如果你正在談論數據庫,這真的很重要...... – Lix 2013-05-04 22:57:31

+0

我不認爲這是一個JavaScript問題(除非它是關於node.js的)。由於您的數據庫位於服務器上,您可能已經在服務器上使用某些內容與之通話了?所以你應該將查詢作爲字符串發送到服務器,並在服務器端解析它。 – 2013-05-04 22:58:16

回答

0

您可以使用多個複選框來優化搜索。

<input name="Level" type="checkbox" value="Level-Value" /> 
<input name="Class" type="checkbox" value="Class-Value" /> 

然後,你可以做基於複選框選擇這樣的單一查詢。

if($check1=='Level' && !$check2=='Class'){//result for level only 
select * from table where name like name AND level == level AND class !== class 
} 
elseif(!$check1=='Level' && $check2=='Class'){//result for class only 
select * from table where name like name AND level !== level AND class == class 
} 
elseif($check1=='Level' && $check2=='Class'){//result for level and class 
select * from table where name like name AND level == level AND class == class 
}