58同城,智联招聘上都有类似下面的多条件搜索:
全上海 > 类别 > 价格 > 个人 >
首先在html中用一个函数(ajax),获取所有的条件发送到php页面。
在php中
<?php
$param=$_POST;//接受ajax传递过来的搜索条件,是一个一维数组
$where=array();
foreach ($param as $k => $v) { //遍历条件数组中的各个条件,形成一个条件数组
switch ($k) {
//搜索个人还是企业
case 'person':
if ($v!="") {
$v?$where[]="u.person like '{$v}%'":'';
}
break;
// 搜索关键字
case 'keyword':
break;
// 价格范围,一般是价格段,但是数据库中存放的只是一个值代表这个段,类似的都可以这样处理
case 'price':
switch ($v) {
// 2000-6000
case 1:
$where[]="u.price between 20 and 36";
break;
// 6000以上
case 5:
$where[]="u.price > 6000";
break;
}
break;
default:
$v?$where[]="u.{$k}={$v}":'';
break;
}
}
//拼装搜索条件
if (!empty($where)) {
$condition=' and '.implode($where, ' and ');
} else {
$condition='';
}