我的问题首先是(很多......信息):当我希望用户能够从下拉框中选择多个答案,将它们保存在他们的个人资料中,然后让其他用户键入时,我有哪些选择来考虑可用性和速度他们的搜索条件(可以再次多个)并最终通过这些多个搜索条件找到用户?
信息:目前我正忙于我网站的一部分作为配对系统,就像约会网站使用的一样。
(我的网站使用 Mysqli、PHP 和 jQuery)
我以约会网站为例来详细说明我的问题:用户 A 填写了他/她的个人资料并输入了他们对某个汽车品牌的偏好:BMW、Volkswagen 和 Mercedes。用户 B 想在网站上搜索喜欢 BMW 和/或 Mercedes 的会员。
我最初的想法是让用户 A 填写输入的多个 html 字段并将其作为数组(或逗号分隔)存储在我的数据库的一列中。然后弄清楚如何在其中为用户 B 存储数组的列中进行选择搜索。
所以基本上用户A可以在他们的个人资料中输入多个汽车品牌,而用户B可以给出他们的标准也是多个汽车品牌;选择查询应获取匹配条件的任何行。
输入字段倍数如下所示:
<tr><td>Which car brand(s) do you like?</td><td>
<select multiple name="CarBrandPref[]">
<option value="BMW" > BMW</option>
<option value="Ford" > Ford</option>
<option value="Mercedes" > Mercedes </option>
<option value="GMC" > GMC</option>
<option value="Volkswagen" > Volkswagen </option>
<option value="Toyota" > Toyota </option>
<option value="Audi" > Audi </option>
</select>
</td></tr>
配置文件表布局类似于:
Id Name CarbrandPref
--------------------------------------------------------
1 Mike bmw,volkswagen,mercedes
2 Paul Mercedes, ford, GMC
3 Axel GMC, ford, toyota, audi
4 John ford, bmw
用户 B 会给出搜索条件“bmw and mercedes”。然后查询应返回 3 行:
Id Name CarbrandPref
---------------------------------------------------------
1 Mike bmw,volkswagen,mercedes
2 Paul Mercedes, ford, GMC
4 John ford, bmw
在我在 SO 和其他网站上搜索以使其正常工作时,我注意到每个人都说这(存储在数据库中的数组中)对性能等不利。此外,我无法通过 mysql 中的数组进行选择搜索工作.
所以现在我很茫然。我不想为每个可能的汽车品牌添加一列,但还能做什么?有没有人可以帮我解决这个问题?任何想法都非常感谢!
我希望这足够清楚,有人可以帮助我。如果不是,请告诉我,我会添加所需的信息。
我使用这些链接能够将下拉框填充的数组存储到 mysql 数据库中: