PHP多条件搜索使用复选框


PHP multi criteria search using checkboxes

我想为我的房地产业务做一个网站。到目前为止,我已经设法使用下拉菜单选择价格,平方米,卧室等进行正确的查询

现在我正试图做一个多搜索条件,用户可以选择公寓的类型通过多个复选框查找…如工作室,阁楼,单层公寓等。在我的数据库中,我有8列对应于房子的种类,每一个都可以采取布尔值。这些列被命名为OB_STUDIO,OB_PENTHOUSE,.....我所做的就是创建和类别一样多的复选框

<input type="checkbox" name="chk1" value="studio" />
<input type="checkbox" name="chk2" value="penthouse" />

。.然后在我的php代码我写....

if ($chk1 == 'studio') {
$where .= " and A.OB_STUDIO= true ";
}
if ($ch2 == 'penthouse') {
$where .= " and A.OB_PENTHOUSE= true ";
}

然后我传递查询字符串作为一个变量

$request_string = "from " . G_DB_PREFIX . "OBJECTS A, 
" . G_DB_PREFIX . "OBJECT_TR B, 
" . G_DB_PREFIX . "TRANSLATION C
where A.OB_ID=B.OTR_OBJECTID and B.OTR_LANG='" . G_LANG . "'
and A.OB_PRODUCTID=C.TR_REFID and C.TR_LANG='" . G_LANG . "' and
C.TR_REFNAME='PRODUCTID' $where";

但是,不是把所有属于这两个类别的房子都转回去(如果我们都检查的话),而是什么也不转。我理解原因是因为查询是搜索属于这两个类别的产品。我需要用什么样的表达来达到我想要的?也许我必须使用一个复选框数组?如果我只检查一个类别,代码工作得很好。我真的是PHP新手,所以如果你能给我一个手,我会很感激。提前致谢

试试这个:

$conditions = array();
if ($chk1 == 'studio') {
$conditions[] = 'A.OB_STUDIO= true';
}
if ($chk2 == 'penthouse') {
$conditions[] = 'A.OB_PENTHOUSE= true';
}
$where = !empty($conditions) ? ' and ('.implode(' or ',$conditions).') ' : '';

您的查询没有返回任何结果,因为您要求在同一时间查询属于这两个类别的所有房屋。如果你需要任何一个类别的房子,你应该查询:

$where .= " and (A.OB_STUDIO= true or A.OB_PENTHOUSE= true)";