PHP MySQL 搜索表单,具有多个类别的多个复选框

标签 php mysql search checkbox

这似乎太简单了,首先不会成为问题 - 但无论如何,这就是问题。

假设您有一个搜索表单,并且您正在寻找从事某个行业某些分支业务的公司。该表单将为每个问题提供一组复选框,用户可以选择他们想要的任何金额。

<小时/>

你最喜欢什么颜色?

[]红色

[]蓝色

[ ] 黄色

你最喜欢什么水果?

[]苹果

[]橙色

[]香蕉

<小时/>

问题一

如果用户检查红色和蓝色 - 我们是否从数据库中提取仅与两者匹配的行?或者我们是否包含也只匹配红色或蓝色的行?在我看来,最终用户可能期望看到一种结果或另一种结果,或两者兼而有之!

问题 2

请记住,我必须使用的 CMS 将每个问题的数据存储在数组中。因此,第一个问题的公司 A 可能持有值“红色|蓝色”或“红色”或“红色|蓝色|黄色”等 - 再加上我的表格有 10 个类别,每个类别至少有 5 个复选框 - 我怎样才能将其转换为高效且优化的查询,而不必求助于 if/else 混搭?

非常感谢任何帮助。

最佳答案

  1. 它很可能是一个连词(红色或蓝色)而不是一个析取词(红色和蓝色),但这取决于问题的语义。如果您给出可以同时出现的选项,那么您可能需要析取。

  2. 我看不出比这样更好的方法

    $colours = $POST["颜色[]"];
    $items = array();

    foreach($colours 作为 $colour){

    $items[] = "'$colour' IN 颜色";

    }

    $SQL .= "AND (".implode(' OR ', $items).")";

关于PHP MySQL 搜索表单,具有多个类别的多个复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7876106/

相关文章:

mysql - 将来自不同服务器的多个 FTP 和 SQL DB 连接在一起(共享资源)

mysql - HL7-FHIR:使用 RESTful api 和 json 还是适应数据库的格式更好?

c# - 过滤掉搜索查询的常用词

PHP,验证用户提交的具有特定域的 URL

php - 在远程数据库中插入 134675 个值的最快方法

php - 在 HTML 搜索表单的 1 个输入文本中搜索超过 1 个值

mysql - 生成不带注释的mysqldump

javascript - 出现在谷歌搜索结果页面中的原始 AngularJs 标记

search - Vim - 在大括号内搜索

php - 无法在 PHPStorm 的 IDE 中运行单元测试