我为我的小项目创建了一个简单的搜索页面。它关于设备上的多功能设备和选项列表。
我有表设备和带设备选项的字段:
option_hdd option_fax option_df(文件馈送器) option_duplex
依此类推......共有8个选项字段。 如果设备包含字段中的选项,则为1(如果不是0)。
我使用GET方法为所有这个选项创建了带有复选框的小表单。
<form action="search.php" method="get" name="search">
<input name="HDD" type="checkbox" value="1" /> HDD<br />
<input name="Fax" type="checkbox" value="1" /> Fax<br />
<input name="DF" type="checkbox" value="1" /> DF<br />
...
<input name="Search" type="submit" />
</form>
我尝试创建一些查询,但我没有得到确切的结果。
如果用户想检查包含hdd和传真选项的设备,他将检查两个复选框并点击搜索,查询需要返回包含已检查选项的设备的结果(对于其他选项不是必需的)
我尝试使用falylowing查询我发现谷歌搜索:)
SELECT * FROM devices WHERE option_hdd = '$_GET[HDD]' OR option_fax = '$_GET[Fax]' OR option_finisher = '$_GET[Df]' ......'
以及
SELECT * FROM devices WHERE option_hdd = '$_GET[HDD]' AND (option_fax = '$_GET[Fax]' OR option_finisher = '$_GET[Df]' ......);
但我确实得到了想要的结果......但这最后是最特写的......
示例i在DB中有5个设备用于测试 所有5个设备都有硬盘,2个设备有传真选项 在表单中我检查硬盘和传真,我得到所有5个设备的结果,但正确的结果必须是2 ...因为只有两个设备有传真选项......
有人可以帮助我并给我正确的查询:)
由于
答案 0 :(得分:0)
另一个解决方案是使用这个技巧:
<input name="HDD" type="hidden" value="0" />
<input name="HDD" type="checkbox" value="1" /> HDD<br />
这样如果PHP没有从复选框中获取值,PHP将恢复为默认值。
请注意您的数据,不要直接在SQL中使用$ _GET。