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

时间:2011-10-24 13:08:56

标签: php mysql search checkbox

这似乎太容易了,因为首先是一个问题 - 但无论如何这是。

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


您最喜欢的颜色是什么?

[]红色

[]蓝色

[]黄色

您最喜欢的水果是什么?

[] Apple

[]橙色

[] Banana


问题1

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

问题2

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

任何帮助都非常感激。

2 个答案:

答案 0 :(得分:1)

  1. 它很可能是一个连接(红色或蓝色)而非分离(红色和蓝色),但它取决于问题的语义。如果您提供可以共同出现的选项,那么您可能需要分离。

  2. 我看不到比

    更好的方法

    $ colors = $ POST [“color []”];
    $ items = array();

    foreach($ colors as $ color){

    $ items [] =“'$ color'IN colors”;

    }

    $ SQL。=“AND(”。implode('OR',$ items)。“)”;

答案 1 :(得分:0)

对于P2,我会创建一个“多对多”的表,并使用带有IN语句的查询。 对于P1,类似的东西 例如:红色,蓝色,白色

select id,color,count(color) as occurrences from table inner join table_attributes where color in ('red','blue','white') order by occurrences

根据您可以对结果进行排序的次数