0

我可以使用 CodeIgniter 将数据插入数据库,也可以从数据库中获取数据,但问题是我无法获取日期 1-9 的数据(数据存在于数据库中)。当月 9 日之后,数据检索成功。

控制器:

function display($year=null,$month=null){
    if (!$year) {
        $year = date('Y');
    }
    if (!$month) {
        $month = date('m');
    }

    $this->load->model('Calendar_model');

    if ($day = $this->input->post('day')) {
        $this->Calendar_model->add_calendar_data("$year-$month-$day",$this->input->post('data')
        );
    }

    $this->load->model('calendar_model');
    $data['calendar']=$this->calendar_model->generate($year,$month);
    $data['viewName']=('Student/s_calendar');
    $this->load->view('Student/template',$data);
}

模型:

function get_cal_data($year,$month){
    $query=$this->db->select('date,data')->from('student_calender')->like('date',"$year-$month")->get();
    $cal_data=array();
    foreach($query->result() as $row){
        $cal_data[substr($row->date,8,2)]=$row->data;
    }
    return $cal_data;
}
4

2 回答 2

1

将此函数用于您的日历数据,codeignitor 仅选择超过 9 的值,因为它将 html 页面中的两个字符与数据库中的两个字符进行比较。任何低于 10 的数字都不匹配,因为在您的数据库中,它会将低于 10 的任何一天保存为零。用这个

function get_calender_data($year,$month)
{

    $query = $this->db->select('date, data')->from('calendar')
->like('date',"$year-$month",'after')->get();

    $cal_data = array();

    foreach ($query->result() as $row) {
        if(substr($row->date,8,1)==0)
        {
            $cal_data[substr($row->date,9,1)] = $row->data;
        }
        else{
        $cal_data[substr($row->date,8,2)] = $row->data;
        }
    }
    return $cal_data;
}
于 2015-05-01T10:06:37.397 回答
0

我通过zend框架遇到了同样的问题最后我明白了mysql中的数据是这种格式的:

YYYY-MM-DD HH:ii:ss

我的查询是这种格式:

YYYY-m-d h:i:s

这意味着例如我有

2013-01-02 13:02:30

在数据库中,我搜索了之间的时间

2013-1-2 13:2:30 and 2013-1-3 13:2:30

这给了我错误的答案。使用 vardump 并查看您的年份和月份值!

于 2013-05-20T19:00:11.370 回答