使用多输入 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 创建过滤器的主要内容,如果未能解决你的问题,请参考以下文章

codeigniter count_all_results

在 CodeIgniter 中使用搜索过滤器进行分页

Codeigniter 多文件上传

动态自定义过滤器在 codeigniter 中不起作用

使用 CodeIgniter 分页时丢失 URI 段

使用Codeigniter中的Ajax过滤表数据