【发布时间】:2021-08-20 10:01:25
【问题描述】:
我正在为我目前正在学习的课程创建一个基本的书评页面。我已经能够从我的数据库中完成简单的搜索:
$search_request = "SELECT *
FROM books
WHERE author
LIKE '%$searchfor%' COLLATE UTF8_GENERAL_CI
OR title LIKE '%$searchfor%' COLLATE UTF8_GENERAL_CI";
这会产生完美的请求和回答。
但是,这只是为我提供了书籍清单。我想过滤搜索结果。
假设有人搜索“托尔金”,那么我想要两个复选框:作者和书籍,他们可以在其中过滤托尔金搜索以显示名为托尔金的作者或包括托尔金在内的书籍。
只要我有某种方式来接收指示作者和书籍的输入,我就可以编写 sql 查询来实现它。
我已经尝试通过锚点使用$_GET 和使用附加表单的$_POST,但是 GET 和 POST 使用初始搜索覆盖了我现有的 POST。有没有办法严格使用 PHP 或非常简单的 JS 来做到这一点?
【问题讨论】:
-
为什么不以初始形式提供该过滤器,而不是等待他们搜索然后提供过滤器?
-
这是我的后备计划。但是,我想让它可以在更广泛的数据库上工作并且更加动态。假设我也有“标签”和“流派”,有人搜索 King。我希望搜索被预选为书籍,显示其中包含 King 的书籍。但随后可以切换标签,显示带有 King 的标签,然后显示带有 King 的作者等。
-
我仍然不明白为什么,为此,您不会简单地拥有一个包含多个字段的表单 - 搜索文本,然后是类别列表(例如“书籍”、“作者” , "tags", "genre") 作为复选框) 他们可以从中选择以应用搜索文本。让用户能够预先准确地选择他们想要的东西,这对用户来说更加友好。两步过程似乎 a) 减慢了用户的速度,并且 b) 导致服务器上不必要的负载(因为当他们只需要一个查询时,他们最终会运行两个查询)。
-
是的,我想你是对的。我选择了该选项,在与搜索字段相同的表单内有两个单选按钮。感谢 cmets :)
标签: javascript php mysql search