我正在进行餐馆搜索,用户可以根据许多标准过滤搜索...
我有三张桌子:
Table1 - **Restaurant**
------+----------+----------
id + name + place
------+----------+----------
1 Rest1 Ny
2 Rest2 La
3 Rest3 Ph
Table2 - **r_type**
------+----------+----------
id + name + code
------+----------+----------
1 type1 0
2 type2 1
3 type3 2
4 type4 3
Table3 - **type_stack**
------+----------+----------
id + rest_id + type
------+----------+----------
1 2 2
2 4 1
3 1 2
现在人们可以搜索type1和type2或只有一种类型的餐馆等... 如何根据用户选择的复选框状态生成查询。 它是如何在PHP中完成的?将有大约7-12个复选框。
另一个问题是实施此方法的最佳方法是什么?这种桌子好吗?因为用户可以选择更改其选项并刷新
使用ajax的结果。所以服务器负载会更多。
谢谢
答案 0 :(得分:2)
将复选框命名为:
<input type="checkbox" name="chk[]" value="1" />
<input type="checkbox" name="chk[]" value="2" />
等等,其中值是Table1中的ID。当用户点击提交按钮时,POST将包含已选中复选框的值。
在你的PHP中,你有
$chkArr = isset($_POST['chk']) ? $_POST['chk'] : array();
$chkArrCSV = implode(',',$chkArr);
然后您可以将查询构建为
$sql = 'SELECT blah FROM blah WHERE id IN '.mysql_real_escape_string($chkArrCSV);
以及清理用户输入所需的任何其他内容。
答案 1 :(得分:1)
我不确定我的sql语法,但您可以将所有复选框作为参数,然后将查询放在您可以执行以下操作的位置:
from ...
where
(somecolumn = @check1 or @check1 is null)
and
(somecolumn2=@check2 or @check2 is null)
我认为这对你来说是一个很好的解决方案。
希望有所帮助