用户
 找回密码
 入住 CI 中国社区
搜索
查看: 2173|回复: 5
收起左侧

[讨论/交流] 基于ci框架的多条件筛选问题

[复制链接]
发表于 2014-12-8 10:43:39 | 显示全部楼层 |阅读模式
废话不多说,就是像那种商城一样可以多条件筛选功能怎么做 ,下面上图
QQ截图20141208104522.png

发表于 2014-12-8 11:02:59 | 显示全部楼层
for, if, switch, where, like
利用這五個可以實現
 楼主| 发表于 2014-12-8 11:06:08 | 显示全部楼层
Closer 发表于 2014-12-8 11:02
for, if, switch, where, like
利用這五個可以實現

能不能说明白点
发表于 2014-12-8 11:29:29 | 显示全部楼层
本帖最后由 Closer 于 2014-12-9 13:18 编辑

四個項目分別存去一個陣列
$z = array($a, $b, $c, $d);
$c 和 $d 內又個別有陣列 (大於/小於, 兩個範圍值)
再將這個 $z 送進 model 判斷,並執行四次 for 迴圈

(以下只是個概念,我沒有測試過)
for($x=0;$x<=3;$x++){
 switch($x){
  case 0: $this->db->like('區域',$z[0]); break;
  case 1: $this->db->like('類別',$z[1]); break;
  case 2:
   if(isset($z[2][1]) && isset($z[2][2])){
    $this->db->where('租金 >',$z[2][1]);
    $this->db->where('租金 <',$z[2][2]);
   }elseif(isset($z[2][1])){
    if($z[2][0]==">"){
     $this->db->where('租金 >',$z[2][1]);
    }else{
     $this->db->where('租金 <',$z[2][1]);
    }
   }
   break;
  case 3:
   if(isset($z[3][1]) && isset($z[3][2])){
    $this->db->where('面積 >',$z[3][1]);
    $this->db->where('面積 <',$z[3][2]);
   }elseif(isset($z[3][1])){
    if($z[3][0]==">"){
     $this->db->where('面積 >',$z[3][1]);
    }else{
     $this->db->where('面積 <',$z[3][1]);
    }
   }
   break;
 }
}

$query = $this->db->get(’search’);
if($query->num_rows() > 0){
 return $query->result_array();
}

 

点评

bob
很好的示例,学习了  发表于 2014-12-9 09:36
发表于 2015-3-13 17:38:31 | 显示全部楼层
这个,应该是JS写吧?如果分类过多还可以配合ajax异步调用数据,至于后端处理逻辑,这么复杂的查询不建议使用CI的Active_record

本版积分规则