使用多输入 Codeigniter 创建过滤器
Posted
技术标签:
【中文标题】使用多输入 Codeigniter 创建过滤器【英文标题】:Create a filter with a multiple input Codeigniter 【发布时间】:2016-08-16 19:46:53 【问题描述】:我要创建一个过滤器
这是我的模型
<?php
function show($branch,$department,$employee,$status,$from,$to,$category)
$this->db->select('a.*,b.name,c.cityname');
$this->db->from('expreport a');
$this->db->join('expuser b','a.createdby=b.unique_id');
$this->db->join('expcity c','a.cityid=c.citycode');
if( $branch != "" || $status !="" || $from !="" || $to !="" || $department !="" || $employee !="")
$this->db->select('d.employeename,e.branchname,f.deptname');
$this->db->from('expemployee d');
$this->db->join('expbranch e','d.branchid=e.branchcode');
$this->db->join('expdepartment f','d.deptid=f.deptcode');
$this->db->like('branchid', $branch);
$this->db->or_like('deptid', $department);
$this->db->or_like('employeeid', $employee);
$this->db->where('status', $status);
$this->db->where('fromdate <=',$from);
$this->db->where('todate >=',$to);
if($category !="")
$this->db->select('g.category');
$this->db->from('expcategory g');
$this->db->like('catcode', $category);
$this->db->group_by('reportcode');
$result = $this->db->get();
echo $this->db->last_query();
return $result->result();
?>
我有 7 个输入,我想将 $branch、$status、$from 等分开,所以查询可以只从 1 个变量执行,所以我不必输入所有变量,因为当我只是填充 1 个输入,查询不执行
所有答案将不胜感激,谢谢:)
【问题讨论】:
当你从控制器传递给函数时,在函数参数中只使用单个变量 $data 使用 $data['branch'] 。 你能举一些例子吗? @AmitChauhan 所以我应该在模型中创建 7 个函数??并且一旦函数包含每个输入的查询?? 【参考方案1】:我做过类似的事情。我有一个基于两个过滤器的数据过滤来显示。我有类别过滤器和位置过滤器。 它在捷克语中,但第一行单选按钮是类别,第二行是位置。
// After user hits "Show events"
if($submit == "Submit")
//check if category filter was applied
if(isset($category_filter) && $category_filter!='' && $category_filter!='everything')
//Add category number into variable and then into SQL query
$cat_sql_condition = 'AND category='.$category_filter.'';
else
$cat_sql_condition='';
//check if location filter was applied
if(isset($location_filter) && $location_filter!='' && $location_filter!='everything')
$loc_sql_condition = 'AND location_id='.$location_filter.'';
else
$loc_sql_condition='';
//Here i am creating the final query
$query_string = "SELECT * FROM tbl_events WHERE visibility=1 AND start_date> ".$current_unix_timestamp." ".$cat_sql_condition." ".$loc_sql_condition." ORDER BY start_date;";
else
//Without submit
$query_string = "SELECT * FROM tbl_events WHERE visibility=1 AND start_date>'.$current_unix_timestamp.' ORDER BY start_date";
【讨论】:
以上是关于使用多输入 Codeigniter 创建过滤器的主要内容,如果未能解决你的问题,请参考以下文章