我有两张桌子:
然后在搜索表单中我有三个字段:
根据表单字段的选择,它将从两个表中进行搜索。
我正在考虑根据用户的选择进行多个SQL查询。
问题是,用户可能不会使用客户端的名称填写输入表单,也可能会填写输入表单,但不会选择城市等。
那么根据用户的选择,我必须做多个ifs来显示多个sql查询吗?也许我有一个不那么混乱的解决方案......
答案 0 :(得分:2)
也许您的数据库结构可以更改以帮助您。例如,我假设您在城市和客户之间存在关系。听起来企业就像“技术”或“搜索”,在这种情况下,您可以拥有多个具有相同业务的客户吗?可能值得将企业移植到一个单独的表中,然后再参考这些表。然后你可以有一个简单的查询,例如:
SELECT *
FROM clients
WHERE clients.city = {form result: cities.id}
AND clients.business = {form result: businesses.id}
ORDER BY clients.name
LIMIT 0, 30
现在假设用户没有填写其中一个字段(例如city),你有两个选择:强制他们通过验证用户输入填充它或将其用作通配符,在这种情况下你可以删除{{来自查询的1}}子句。假设您从“城市”中提供WHERE clients.city
个<select>
选项值。
以编程方式我在这种情况下构建查询:
id
过滤器是您选择的过滤方法。
答案 1 :(得分:1)
只需使用您的条件查询数据库。如果客户/城市实际存在,那么它们将显示,否则查询将返回空集。这样简单,无需验证其中任何一个的存在 - 用户应该足够聪明,以便能够提出现有的城市名称。
你唯一需要做的就是mysql_real_escape_string()。