我的应用程序有一个高级搜索表单,它使用Ajax / PHP查询数据库。我的表单字段如下:Name
,ID
,Level
,Class
。
如果用户输入Level
和class
,则会显示所有具有相同级别和班级的学生。
现在我想改进它以允许用户在AND / OR之间进行选择,例如他想要搜索具有相同名称但在a级或a级中的学生。
select * from table where name like name AND (level == level OR class == class)
实现这一目标的最佳方法是什么?是否有任何技术或类似于Solr和Hibernate Search的东西?
答案 0 :(得分: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
}