2015-10-16 83 views
1

在下面的代码中,我得到了第三个if-else语句的空数组。我想要的是从用户那里得到一系列的日期并相应地显示表中的数据。我的第一个if-else语句返回所需结果,但第二个语句返回空数组。在codeigniter项目中获取一个空数组

控制器:

public function bookings() 
    { 
    if($this->userlib->isLoggedIn()) 
    { 
     if($this->userlib->isAdmin()) 
     { 
      $this->load->view('admin_search_booking'); 
      $date_posted_from = $this->input->post('date_posted_from'); 
      $date_posted_till = $this->input->post('date_posted_till'); 
      $date_posted_on = $this->input->post('date_posted_on'); 
      if(is_null($date_posted_from) && is_null($date_posted_till) && is_null($date_posted_on)) 
      { 
       $total_trails = $this->admin_panel_model->total_trail();  
       var_dump($total_trails); 
      } 
      elseif(!is_null($date_posted_on)) 
      { 
       $total_trails = $this->admin_panel_model->filter_on_date($date_posted_on); 
       var_dump($total_trails); 
      } 
      elseif(!is_null($date_posted_from) && !is_null($date_posted_till)) 
      { 
       $total_trails = $this->admin_panel_model->filter_by_date($date_posted_from, $date_posted_till); 
       var_dump($total_trails); 
      } 
     } 
    } 
    else 
    { 
     echo "User not Logged In"; 
    } 
} 

型号filter_by_date: -

public function filter_by_date($date_posted_from, $date_posted_till) 
{ 
    $query = $this->db->select('*') 
         ->where('date >=', $date_posted_from) 
         ->where('date <=', $date_posted_till) 
         ->get($this->search); 
    return $query->result(); 
} 

isLoggedIn: -

public function isLoggedIn() 
{ 
    if($this->ci->session->email) 
     return true; 
    else 
     return false; 
} 
+0

尝试'echo'您的查询,并检查它的Sql –

+0

查询中工作是工作的罚款,检查,居然当我删除第一ifelse,其他ifelse工作得很好。 –

+0

发表你的'isLoggedIn'功能 –

回答

0

更改模型的功能这样

public function filter_by_date($date_posted_from="", $date_posted_till="") 
{ 
    $query = $this->db->select('*'); 
    if($date_posted_from) 
     $this->db->where('date >=', $date_posted_from); 
    if($date_posted_till) 
     $this->db->where('date <=', $date_posted_till); 
    $this->db->get($this->search); 
    return $query->result(); 
} 
+0

仍然不能正常工作 –

+0

打印最后一个查询并在phpmyadmin运行查询并检查那里。 –

0
//This may help you put your table name in your select statement and update where clause 
public function filter_by_date($date_posted_from, $date_posted_till){ 
     $date_posted_from='2015-10-10'; 
     $date_posted_till='2015-10-16'; 
     $query = $this->db->select('*')->from('Your_Table_Name') 
          ->where("date >= '".$date_posted_from."'") 
          ->where("date <= '".$date_posted_till."'") 
          ->get($this->search); 
     return $query->result(); 
    } 
+0

您正在将值初始化为$ date_posted_from和$ date_posted_till,但我希望仅从控制器文件中检索它们。 –

+0

仅传递控制器中的值并调用您的方法我已初始化变量,例如。评论那些初始化的变量。 –

+0

像这样: $ admin = new admin(); //创建模型文件的对象 $ date_posted_from ='2015-10-10'; $ date_posted_till ='2015-10-16'; $ list = $ admin-> filter_by_date($ date_posted_from,$ date_posted_till); –

0

使用$这个 - > DB-> last_query();在filter_by_date()之后并检查实际正在执行的查询。还要确保在您搜索的日期范围内有记录。 或者干脆使用简单的查询,

$Q = $this->db->query("select * from table_name where date >='".$date_posted_from."' and date <='".$date_posted_to."'"); 
return $Q->result_array();