Php 将月份和年份与数据库表进行比较
我有一个下拉列表,其中包含以下数据- 2016年11月Php 将月份和年份与数据库表进行比较,php,codeigniter,Php,Codeigniter,我有一个下拉列表,其中包含以下数据- 2016年11月 2016年12月 有一个过滤器按钮,点击过滤器按钮后,我想显示所选月份和年份的数据。日期存储在数据库表中,如- 2016-12-26 18:32:00 以下是我迄今为止所做的工作: ajax $(document).on('click','#page_filter_btn',function(){ var page_date_list=$('#page_date_list').val(); $.ajax({
2016年12月 有一个过滤器按钮,点击过滤器按钮后,我想显示所选月份和年份的数据。日期存储在数据库表中,如- 2016-12-26 18: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();
}
控制器
$(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();
}
型号
$(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();
}
我只想按照下拉列表中的选定值显示数据。谢谢 MySQL中有一个
MONTH()
和一个YEAR()
函数。尝试添加以下内容:
$this->db->where('MONTH(p.post_date)', $month);
$this->db->where('YEAR(p.post_date)', $year);
MySQL中有一个MONTH()
和一个YEAR()
函数。尝试添加以下内容:
$this->db->where('MONTH(p.post_date)', $month);
$this->db->where('YEAR(p.post_date)', $year);
首先,您需要将月份从字符串转换为数值,如11,而不是11。所以
disp\u all\u pages
函数的代码应该是这样的:
$date = "November 2016";
$month = date('m', strtotime(strtok($date, ' ')));
$year = substr($date, strpos($date, " ") + 1);
现在您可以直接将其与@Dannis回答的DB列进行比较:
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();
}
希望有帮助。首先,您需要将月份从字符串转换为数值,如11,而不是11。所以
disp\u all\u pages
函数的代码应该是这样的:
$date = "November 2016";
$month = date('m', strtotime(strtok($date, ' ')));
$year = substr($date, strpos($date, " ") + 1);
现在您可以直接将其与@Dannis回答的DB列进行比较:
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();
}
希望能有所帮助。@Dennis感谢您的回答,我包括了where条件,但返回null。日期的存储方式类似于2016-12-26 18:32:00,所以month()和year()函数将如何工作?@Deepak请再次检查查询。Dennis是对的,它应该可以工作。@Deepak是存储为DATETIME或VARCHAR的日期?@Dennis date存储为DATETIME。
MONTH()
和YEAR()
是正确的函数。您是否检查了您的查询,但没有同时检查两者?仅适用于YEAR()
?您是否检查了$month
和$year
的值,它们是否为数字?$month
是否介于1到12之间?也许可以尝试一个更简单的查询并添加越来越多的详细信息来查找错误:$this->db->query(“选择*FROM sa_posts WHERE YEAR(post_date)='“$YEAR.””)
@Dennis感谢您的回答,我包括了WHERE条件,但它返回null。日期的存储方式类似于2016-12-26 18:32:00,所以month()和year()函数将如何工作?@Deepak请再次检查查询。Dennis是对的,它应该可以工作。@Deepak是存储为DATETIME或VARCHAR的日期?@Dennis date存储为DATETIME。MONTH()
和YEAR()
是正确的函数。您是否检查了您的查询,但没有同时检查两者?仅适用于YEAR()
?您是否检查了$month
和$year
的值,它们是否为数字?$month
是否介于1到12之间?也许可以尝试一个更简单的查询,并添加越来越多的详细信息来查找错误:$this->db->query(“从SAU帖子中选择*年(帖子日期)='“$YEAR.””)
您在var page\u date\u列表中得到了什么@Asif数据存储在page\u date\u列表中,截至2016年11月。在那之后,我把月名和年分开,得到月的第一天和最后一天[并使用中间查询来获取这两个日期之间的数据。var page_date_列表
@Asif data存储在page_date_列表中,日期为2016年11月。之后,我将月份名称和年份分开,得到月份的第一天和最后一天[并使用between查询获取这两个日期之间的数据。@d.coder感谢您的回答,但它不返回任何数据。您可以共享存储在DB中的一段数据吗?我想看看它如何返回null。@d.coder感谢您的回答,但它不返回任何数据。您可以共享存储在DB中的一段数据吗?我想看看它如何返回null。