如何使用两个日期选择器从我的数据库中获取数据。代码点火器
Posted
技术标签:
【中文标题】如何使用两个日期选择器从我的数据库中获取数据。代码点火器【英文标题】:How to get data from my database using two datepickers. CODEIGNITER 【发布时间】:2013-10-23 06:01:04 【问题描述】:我想从我的两个日期选择器之间的数据库中选择所有数据。请帮助我了解如何在这种情况下使用 BETWEEN AND 语句。 我从第一个日期选择器中选择一个日期,然后显示数据,但是当我在第二个日期选择器上选择一个日期时,第二个日期选择器中的日期数据只显示第一个日期消失了
我使用了这个查询
$this->db->where('date_sold >=',$this->input->post('selectdate'));
$this->db->where('date_sold <=',$this->input->post('selectdate2'));
但我只得到 1 个数据..
<span>Select 1st sem:</span>
<div id="datetimepicker1" class="input-append date">
<input data-format="MM/dd/yyyy" type="text" readonly name="selectDate" id="selectDate"></input>
<span class="add-on">
<i data-time-icon="icon-time" data-date-icon="icon-calendar">
</i>
</span>
</div>
<script type="text/javascript">
$(function()
var date = new Date();
date.setDate(date.getDate());
$('#datetimepicker1').datetimepicker(
pickTime: false
);
);
</script>
<span>Select 2st sem:</span>
<div id="datetimepicker2" class="input-append date">
<input data-format="MM/dd/yyyy" type="text" readonly name="selectDate" id="selectDate2"></input>
<span class="add-on">
<i data-time-icon="icon-time" data-date-icon="icon-calendar">
</i>
</span>
</div>
<script type="text/javascript">
$(function()
var date = new Date();
date.setDate(date.getDate());
$('#datetimepicker2').datetimepicker(
pickTime: false
);
);
</script>
/这是我的看法
function get_semreportdata()
$q = $this->db->select('
books.title,
reserved_books.id,
reserved_books.isbn,
reserved_books.price,
reserved_books.item_sold,
reserved_books.date_sold,
reserved_books.total_amount
')
->from('reserved_books')
->join('books','reserved_books.isbn= books.isbn')
->where('date_sold >=',$this->input->post('selectdate'))
->where('date_sold <=',$this->input->post('selectdate2'));
$reserved['rows'] = $q->get()->result();
$this->db->select_sum('total_amount');
$this->db->where('date_sold',$this->input->post('selectdate'));
$query = $this->db->get('reserved_books');
$reserved['total'] = $query->result();
return $reserved;
这是我的模特
【问题讨论】:
【参考方案1】:在您的代码示例中,您的两个字段都被命名为 selectDate。我认为这就是为什么您的原始查询不起作用的原因。尝试将第二个字段重命名为 selectdate2
【讨论】:
【参考方案2】:我会这样说:
“.$this->input->post('selectdate')”之间的'date_sold'。和“.$this->input->post('selectdate')。”
假设您提交的日期格式适合您的数据库表。
【讨论】:
$this->db->where('date_sold between',$this->input->post('selectdate')." and ".$this->input->post('选择日期2'));我使用了这个,但仍然显示第二个日期选择器的选定日期【参考方案3】:试试这个,确保你有适当的date_sold
类型,比如日期或日期时间,并注意发布的输入,它们包含与date_sold
列一样的确切日期格式。我已经制作了三种情况,一种用于介于两者之间,另一种用于其他两种包含单个日期数据。我通过将第三个参数传递为 false 来使用自定义字符串
$datef=$this->input->post('selectdate');
$dates=$this->input->post('selectdate2');
$q = $this->db->select('
books.title,
reserved_books.id,
reserved_books.isbn,
reserved_books.price,
reserved_books.item_sold,
reserved_books.date_sold,
reserved_books.total_amount
')
->from('reserved_books')
->join('books','reserved_books.isbn= books.isbn');
if(!empty($datef) && !empty($dates))
$this->db->where(" `date_sold` BETWEEN '".$datef."' AND '".$dates."' ", NULL, FALSE);
elseif(!empty($datef))
$this->db->where( " `date_sold` >=.'"$datef."' ", NULL, FALSE);
elseif(!empty($dates))
$this->db->where(" `date_sold` <=.'".$dates."' ", NULL, FALSE);
Reference
$this->db->where() 接受可选的第三个参数。如果你设置它 为 FALSE,CodeIgniter 不会尝试保护您的字段或表 带有反引号的名称。
Active Record
【讨论】:
以上是关于如何使用两个日期选择器从我的数据库中获取数据。代码点火器的主要内容,如果未能解决你的问题,请参考以下文章
引导日期选择器从另一个日期选择器更改 minDate/startDate