【问题标题】:Advanced Search form?高级搜索表单?
【发布时间】:2013-05-04 22:53:01
【问题描述】:

我的应用程序有一个高级搜索表单,它使用 Ajax/PHP 来查询数据库。我的表单字段如下:NameIDLevelClass

如果用户输入Levelclass,它将显示所有具有相同级别和班级的学生。

现在我想改进它以允许用户在 AND/OR 之间进行选择,例如他想搜索同名但在 a 级或 a 类的学生。

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

实现这一目标的最佳方法是什么?有什么技术或类似 Solr 和 Hibernate Search 的东西吗?

【问题讨论】:

  • Javasctipt 与查询数据库无关。如果有的话,您的 javascript 将简单地触发对数据库的查询。
  • 话虽如此,您的问题很宽泛,无法以当前形式回答。你没有提到任何关于你的服务器端技术的事情,如果你在谈论数据库,这真的很重要......
  • 我不认为这是一个 JavaScript 问题(除非它是关于 node.js)。由于您的数据库在服务器上,您可能已经在服务器上使用某些东西与之交谈?所以你应该把查询作为字符串发送到服务器,然后在服务器端解析它。
  • 将某些东西描述为“高级”也根本没有给我们太多关于您想要实现的目标的暗示。请看看您到底在问什么,并尝试以一种让我们更容易提供帮助的方式来制定它:)
  • 有不同种类的 jquery 搜索插件,这取决于你想如何实现它。可以肯定的说是需要用到ajax。

标签: php search


【解决方案1】:

您可以使用多个复选框来优化搜索。

<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
}

【讨论】:

    猜你喜欢
    • 2012-11-10
    • 2015-01-14
    • 2014-09-02
    • 2018-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-08
    相关资源
    最近更新 更多