【问题标题】:Date not been inserted to database in codeigniter日期未在 codeigniter 中插入数据库
【发布时间】:2015-12-15 06:56:59
【问题描述】:

我正在尝试在我的数据库中插入一个日期。但它不会只插入数据。

我正在使用 codeigniter 日期助手 http://www.codeigniter.com/user_guide/helpers/date_helper.htmlnice_date 函数

自动加载日期助手。

我的 add_calendar_data 函数由于某种原因不会将 $good_date 插入到日期列中。

通过下面的回显数据测试日期

$bad_date = '1'.'-'.$calendar_dates['month'].'-'.$calendar_dates['year'];
$good_date = nice_date($bad_date, 'Y-d-m');
echo $good_date;

显示 2016-01-01

问题 为什么$good_date 没有插入到数据库中?我该如何解决这个问题?

更新:

出于某种原因,即使我可以在索引函数上获取年份和月份并很好地回显它。不会让我将年份和月份传递给另一个函数

控制器

<?php

class Calendar extends MX_Controller {

    public function index($calendar_dates = null) {
        $this->load->model('dashboard/model_calendar');

        $bad_date = '1'.'-'.$calendar_dates['month'].'-'.$calendar_dates['year'];
        $good_date = nice_date($bad_date, 'Y-d-m');
        echo $good_date;

        // And that displays 2016-01-01           

        if ($this->input->post('day')) {

            $bad_date = $this->input->post('day').'-'.$calendar_dates['month'].'-'.$calendar_dates['year'];

            $this->add_calendar_data($bad_date);

        }

        $data['calendar'] = $this->model_calendar->generate($calendar_dates['year'], $calendar_dates['month']);

        $this->load->view('dashboard/calender_view', $data);
    }

    public function add_calendar_data($bad_date) {
        $good_date = nice_date($bad_date, 'Y-d-m');

        $calendar_data = array(
            'date'=> $good_date,
            'data' => $this->input->post('data')
        );

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

} 

脚本

<script type="text/javascript">
$(document).ready(function() {

    $('.calendar .day').click(function() {

        day_num = $(this).find('.day_num').html();
        day_data = prompt('Enter Stuff', $(this).find('.content').html());

        if (day_data != null) {
            $.ajax({
                url: 'dashboard/calendar',
                type: 'POST',
                data: {
                    day: day_num,
                    data: day_data
                },
                success: function(msg) {
                    location.reload();
                }                       
            });

        }
    });

});

</script>

型号

<?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('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 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);
    }
}

【问题讨论】:

  • 什么是 $this->input->post('data') ?您能否也添加您的 jQuery 代码 $this->db->insert($this->db->dbprefix . 'calendar', $calendar_data);错了试试 $this->db->insert($this->db->dbprefix('calendar'), $calendar_data);
  • $this->input->post('data') 获取我在日历中输入的任何消息。并且 $this->input->post('day') 获取选定的日期。

标签: codeigniter


【解决方案1】:

您似乎正在尝试使用为 null 的函数变量尝试

class Calendar extends MX_Controller {

    public function index($calendar_dates = null) {
        $this->load->library('session');
        $this->load->model('dashboard/model_calendar');

        $bad_date = '1'.'-'.$calendar_dates['month'].'-'.$calendar_dates['year'];
        $good_date = nice_date($bad_date, 'Y-d-m');
        echo $good_date;
        $this->session->set_flashdata('good_date', $good_date); //Store the variable

        // And that displays 2016-01-01           

        if ($this->input->post('day')) {

            $bad_date = $this->input->post('day').'-'.$calendar_dates['month'].'-'.$calendar_dates['year'];

            $this->add_calendar_data($bad_date);

        }

        $data['calendar'] = $this->model_calendar->generate($calendar_dates['year'], $calendar_dates['month']);

        $this->load->view('dashboard/calender_view', $data);
    }

    public function add_calendar_data() {

        $calendar_data = array(
            'date'=> $this->session->flashdata('good_date'),
            'data' => $this->input->post('data')
        );

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

} 

【讨论】:

  • 这个 $this->input->post('day') 只获取选定的日期,不给出月份或年份只是一天。
  • @wolfgang1983 它从 jQuery 帖子中获取 day_num。你还想插入什么?
  • 会先给的。但是发现了一些原因,即使我可以在索引函数上获得年份和月份并很好地回显它。不会让我将年份和月份传递给另一个函数
  • 也许你需要一个函数来处理日期并返回一些 $var 并且你可以在需要时调用它
【解决方案2】:

在表格中将日期类型更改为 TEXT,然后重试。

【讨论】:

  • 尝试输入文本
  • var_dump($calendar_data) 提供了什么?
  • array (size=2) 'year' =&gt; string '2016' (length=4) 'month' =&gt; string '01' (length=2)
  • 出于某种原因,即使我可以在索引函数上获得年份和月份并很好地回显它。不会让我将年份和月份传递给另一个函数。
【解决方案3】:

已解决

在研究了几个小时后,我发现了为什么它没有正确获取 uri 段。

当我检查 fire bug 时,表单脚本没有加载正确的 url。并且缺少 uri 段。

我现在可以插入正确的日期了。

url: 'dashboard/calendar',

现在改为

url: window.location,

完整脚本

<script type="text/javascript">
$(document).ready(function() {
    
    $('.calendar .day').click(function() {
    
        day_num = $(this).find('.day_num').html();
        day_data = prompt('Enter Stuff', $(this).find('.content').html());
            
        if (day_data != null) {
            $.ajax({
                url: window.location,
                type: 'POST',
                data: {
                    day: day_num,
                    data: day_data
                },
                success: function(msg) {
                    location.reload();
                }                       
            });
                
        }
    });
        
});
        
</script>

控制器

<?php

class Calendar extends MX_Controller {

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

    public function index() {
        $this->load->model('dashboard/model_calendar');

        if ($this->input->post('day')) {

            $calendar = array(
                'date' =>$this->uri->segment(3) .'-'. $this->uri->segment(4) .'-'. $this->input->post('day'),
                'data' => $this->input->post('data')
            );

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

        }

        $data['calendar'] = $this->model_calendar->generate($this->uri->segment(3), $this->uri->segment(4));

        $this->load->view('dashboard/calender_view', $data);
    }
} 

【讨论】:

    猜你喜欢
    • 2013-03-28
    • 1970-01-01
    • 2014-10-03
    • 2021-02-07
    • 1970-01-01
    • 2014-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多