2016-12-27 79 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