如何使用两个日期选择器从我的数据库中获取数据。代码点火器

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

如何从我的EditText获取具有格式化日期的日期对象(通过微调器存储)

使用数据库表的选择语句禁用日期选择器中的天数

根据用户输入从 LinkedList 中获取值

使用 Jquery Datepicker 获取日期