2016-12-27 74 views
0

我有包含數據如下下拉列表 -比較月份和年份與數據庫表

2016十一月
2016年12月

有一個過濾器按鈕,點擊過濾器按鈕後,我想顯示數據按選定的月份和年份。日期存儲在數據庫表中喜歡 -

2016年12月26日十八點32分00秒

這是我迄今所做的:

AJAX

$(document).on('click','#page_filter_btn',function(){ 
    var page_date_list=$('#page_date_list').val(); 
    $.ajax({ 
     url:base_url+'admin/disp_all_pages', 
     type:'post', 
     data:{page_date_list:page_date_list,action:'page_filter'}, 
     success:function(data){ 
      $('#disp_all_pages').html(data); 
     } 
    }); 
}); 

控制器

public function disp_all_pages() 
{ 
    $date = $this->input->post('page_date_list'); 
    $month = strtok($date, ' '); 
    echo $year = substr($date, strpos($date, " ") + 1); 
    $data = $this->admin_data->disp_filter_page($month,$year); //Send month and year to model 
} 

型號

public function disp_filter_page($month,$year) 
{ 
    $this->db->select('p.post_type,p.ID, p.post_date, p.post_title, u.user_login'); 
    $this->db->from('sa_posts p,sa_terms t,sa_users u'); 
    $this->db->where('post_type','page'); 
    $this->db->where('u.ID=p.post_author'); 
    $this->db->group_by('p.ID'); 
    $query=$this->db->get(); 
    return $query->result(); 
} 

我只想在下拉列表中顯示的數據按選擇的值。
謝謝。

+0

你在'var page_date_list'中得到了什麼。 –

+0

@Asif數據存儲在page_date_list作爲2016年11月。之後,我做了月份名稱和年的分離 – Deepak

+0

獲取本月的第一天和最後一天[http://stackoverflow.com/questions/2680501/how-can-i查找首先和最後一個月的使用php]並在查詢之間使用以在這兩個日期之間獲取數據。 –

回答

3

首先你需要一個月字符串轉換爲數值像,而不是的。所以disp_all_pages函數的代碼應該是這樣的:

$date = "November 2016"; 
$month = date('m', strtotime(strtok($date, ' '))); 
$year = substr($date, strpos($date, " ") + 1); 

現在,您可以直接與DB列由@Dannis的回答比較吧:

public function disp_filter_page($month,$year) 
{ 
    $this->db->select('p.post_type,p.ID, p.post_date, p.post_title, u.user_login') 
      ->from('sa_posts p,sa_terms t,sa_users u') 
      ->where(array('post_type' => 'page', 'u.ID' => 'p.post_author', 'MONTH(p.post_date)' => $month, 'YEAR(p.post_date)' => $year)) 
      ->group_by('p.ID'); 
    $query = $this->db->get(); 
    return $query->result(); 
} 

希望這將有助於。

+0

@ d.coder感謝您的回答,但它不返回任何數據。 – Deepak

+0

你可以分享存儲在數據庫中的數據嗎?我想看看它是如何返回null。 –

1

在MySQL中有MONTH()YEAR()函數。嘗試添加此:

$this->db->where('MONTH(p.post_date)', $month); 
$this->db->where('YEAR(p.post_date)', $year); 
+0

@丹尼斯感謝您的回答,我包括兩個條件但它返回null。日期存儲像2016-12-26 18:32:00,那麼月()和年()函數將如何工作? – Deepak

+1

@Deepak請再次檢查查詢。丹尼斯是對的,它應該工作。 –

+0

@Deepak日期是以DATETIME還是以VARCHAR存儲? – pixelarbeit