Codeigniter&;HMVC日历未插入正确的日期?

Codeigniter&;HMVC日历未插入正确的日期?,codeigniter,codeigniter-3,codeigniter-hmvc,Codeigniter,Codeigniter 3,Codeigniter Hmvc,我正在使用CodeIgniter日历,我可以点击任何一天并输入文本,但当我点击2016年1月的日期和插入数据时,它没有输入正确的日期 它插入2015-12-01,应插入日期2016-1-1,如果在下一年,则无法插入正确的日期 问题如果插入数据是在新的一年,比如2016年,将只插入年份日期2015年,我如何解决这个问题 注意:当我查看2016年1月的月份时,url显示 http://localhost/project/admin/common/dashboard/2016/01 控制器 型号

我正在使用CodeIgniter日历,我可以点击任何一天并输入文本,但当我点击2016年1月的日期和插入数据时,它没有输入正确的日期

它插入2015-12-01,应插入日期2016-1-1,如果在下一年,则无法插入正确的日期

问题如果插入数据是在新的一年,比如2016年,将只插入年份日期2015年,我如何解决这个问题

注意:当我查看2016年1月的月份时,url显示

http://localhost/project/admin/common/dashboard/2016/01
控制器

型号

<?php

class Model_calendar extends CI_Model {

    var $prefs;

    public function __construct() {
        parent::__construct();

        $this->prefs = array(
            'start_day' => 'monday',
            'show_next_prev' => true,
            'next_prev_url' => base_url('admin/common/dashboard')
        );

        $this->prefs['template'] = '
            {table_open}<table border="0" cellpadding="0" cellspacing="0" class="table table-striped table-bordered calendar">{/table_open}

            {heading_row_start}<tr>{/heading_row_start}

            {heading_previous_cell}<th><a href="{previous_url}"><i class="fa fa-chevron-left fa-2x "></i></a></th>{/heading_previous_cell}
            {heading_title_cell}<th class="text-center" colspan="{colspan}">{heading}</th>{/heading_title_cell}
            {heading_next_cell}<th class="text-right"><a href="{next_url}"><i class="fa fa-chevron-right fa-2x"></i></a></th>{/heading_next_cell}

            {heading_row_end}</tr>{/heading_row_end}

            {week_row_start}<tr>{/week_row_start}
            {week_day_cell}<td>{week_day}</td>{/week_day_cell}
            {week_row_end}</tr>{/week_row_end}

            {cal_row_start}<tr class="days">{/cal_row_start}
            {cal_cell_start}<td class="day">{/cal_cell_start}

            {cal_cell_content}
                <div class="day_num">{day}<span class="label label-danger" style="margin-left: 10px;">Notice</span></div>
                <div class="content">{content}</div>
            {/cal_cell_content}
            {cal_cell_content_today}
                <div class="day_num highlight">{day}</div>
                <div class="content">{content}</div>
            {/cal_cell_content_today}

            {cal_cell_no_content}<div class="day_num">{day}</div>{/cal_cell_no_content}
            {cal_cell_no_content_today}<div class="day_num highlight">{day} <span class="label label-success">Current Day</span></div>{/cal_cell_no_content_today}

            {cal_cell_blank}&nbsp;{/cal_cell_blank}

            {cal_cell_end}</td>{/cal_cell_end}
            {cal_row_end}</tr>{/cal_row_end}

            {table_close}</table>{/table_close}
        ';
    }

    public function add_calendar_data($date, $data) {
        $this->db->select('date');
        $this->db->from($this->db->dbprefix . 'calendar');
        $this->db->where('date', $date);
        $check = $this->db->count_all_results();

        if (empty($data)) {
            $this->db->where('data', $data);
            $this->db->delete($this->db->dbprefix . 'calendar');
        }

        if ($check) {

            $this->db->where('date', $date);
            $this->db->update($this->db->dbprefix . 'calendar', array('date' => $date, 'data' => $data));

        } else {

            $calendar_data = array(
                'date' => $date,
                'data' => $data
            );

            $this->db->insert($this->db->dbprefix . 'calendar', $calendar_data);

        }


    }

    public function delete() {
        $this->db->where('data', " ");
        $this->db->delete($this->db->dbprefix . 'calendar');

    }

    public function get_calendar_data($year, $month) {
        $this->db->select('date, data');
        $this->db->from($this->db->dbprefix . 'calendar');
        $this->db->like('date', "$year-$month", 'after');
        $query = $this->db->get();

        $cel_data = array();

        foreach ($query->result() as $row) {
            $cel_data[substr($row->date, 8,2)] = $row->data;
        }

        return $cel_data;
    }

    public function generate($year, $month) {
        $cel_data = $this->get_calendar_data($year, $month);

        $this->load->library('calendar', $this->prefs);

        return $this->calendar->generate($year, $month, $cel_data);
    }
}

Codeigniter日历类有一个名为:
adjust_date($month,$year)
的函数,它确保您有一个有效的月/年。例如,如果您提交13作为月份,则年份将递增,月份将变为一月


在您的情况下,需要2016-1-1(
http://localhost/project/admin/common/dashboard/2016/-1/-1
),返回到2015年12月1日

问题在哪里没有得到问题@Wolfgang1983检查你的函数get_calendar_data(),它可能返回错误的值…@Vickel它没有插入正确的日期。当我在新的一年里,我想你会使用2016/-1/-1,也就是2015年12月1日。需要拆分日期字符串2016-01-01了解为什么ajax url在视图上没有选择正确的位置,因此我必须在ajax url上使用window.location而不是base_url。
<?php

class Model_calendar extends CI_Model {

    var $prefs;

    public function __construct() {
        parent::__construct();

        $this->prefs = array(
            'start_day' => 'monday',
            'show_next_prev' => true,
            'next_prev_url' => base_url('admin/common/dashboard')
        );

        $this->prefs['template'] = '
            {table_open}<table border="0" cellpadding="0" cellspacing="0" class="table table-striped table-bordered calendar">{/table_open}

            {heading_row_start}<tr>{/heading_row_start}

            {heading_previous_cell}<th><a href="{previous_url}"><i class="fa fa-chevron-left fa-2x "></i></a></th>{/heading_previous_cell}
            {heading_title_cell}<th class="text-center" colspan="{colspan}">{heading}</th>{/heading_title_cell}
            {heading_next_cell}<th class="text-right"><a href="{next_url}"><i class="fa fa-chevron-right fa-2x"></i></a></th>{/heading_next_cell}

            {heading_row_end}</tr>{/heading_row_end}

            {week_row_start}<tr>{/week_row_start}
            {week_day_cell}<td>{week_day}</td>{/week_day_cell}
            {week_row_end}</tr>{/week_row_end}

            {cal_row_start}<tr class="days">{/cal_row_start}
            {cal_cell_start}<td class="day">{/cal_cell_start}

            {cal_cell_content}
                <div class="day_num">{day}<span class="label label-danger" style="margin-left: 10px;">Notice</span></div>
                <div class="content">{content}</div>
            {/cal_cell_content}
            {cal_cell_content_today}
                <div class="day_num highlight">{day}</div>
                <div class="content">{content}</div>
            {/cal_cell_content_today}

            {cal_cell_no_content}<div class="day_num">{day}</div>{/cal_cell_no_content}
            {cal_cell_no_content_today}<div class="day_num highlight">{day} <span class="label label-success">Current Day</span></div>{/cal_cell_no_content_today}

            {cal_cell_blank}&nbsp;{/cal_cell_blank}

            {cal_cell_end}</td>{/cal_cell_end}
            {cal_row_end}</tr>{/cal_row_end}

            {table_close}</table>{/table_close}
        ';
    }

    public function add_calendar_data($date, $data) {
        $this->db->select('date');
        $this->db->from($this->db->dbprefix . 'calendar');
        $this->db->where('date', $date);
        $check = $this->db->count_all_results();

        if (empty($data)) {
            $this->db->where('data', $data);
            $this->db->delete($this->db->dbprefix . 'calendar');
        }

        if ($check) {

            $this->db->where('date', $date);
            $this->db->update($this->db->dbprefix . 'calendar', array('date' => $date, 'data' => $data));

        } else {

            $calendar_data = array(
                'date' => $date,
                'data' => $data
            );

            $this->db->insert($this->db->dbprefix . 'calendar', $calendar_data);

        }


    }

    public function delete() {
        $this->db->where('data', " ");
        $this->db->delete($this->db->dbprefix . 'calendar');

    }

    public function get_calendar_data($year, $month) {
        $this->db->select('date, data');
        $this->db->from($this->db->dbprefix . 'calendar');
        $this->db->like('date', "$year-$month", 'after');
        $query = $this->db->get();

        $cel_data = array();

        foreach ($query->result() as $row) {
            $cel_data[substr($row->date, 8,2)] = $row->data;
        }

        return $cel_data;
    }

    public function generate($year, $month) {
        $cel_data = $this->get_calendar_data($year, $month);

        $this->load->library('calendar', $this->prefs);

        return $this->calendar->generate($year, $month, $cel_data);
    }
}