2013-05-04 111 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 
}