当我更新数据时,它没有更新正确的Codeigniter

时间:2015-12-16 04:37:31

标签: codeigniter

我正在尝试将某些日历数据更新到数据库。但每次我更新时都会更新我的天专栏,会更新18<span class="label label-danger" xss=removed>Notice</span>它应该只更新数字 18

的日期列

我不确定为什么$this->input->post('day')添加了跨度信息。

这是我的var转储。

array (size=2)
  17 => string 'Event 17-12-15' (length=14)
  '18<span class="label label-danger" xss=removed>Notice</span>' => string '26' (length=2)
  

问题:

     
      
  1. 如何仅使用数字而不是使用span更新日期列?
  2.   
  3. 可能导致其更新数字的范围是什么?
  4.   

尝试:

$this->input->post('day', TRUE)

$this->input->post('day', FALSE)

控制器

注意:我在控制器上使用模型功能只是为了测试

<?php

class Calendar extends MX_Controller {

    public function __construct() {
        parent::__construct();
        $this->load->model('dashboard/model_calendar');
        $this->load->library('calendar');
    }

    public function index() {

        if ($this->uri->segment(3) == FALSE) {
            $year = date('Y');
        } else {
            $year = $this->uri->segment(3);
        }

        $data['year'] = $year;

        if ($this->uri->segment(4) == FALSE) {
            $month = date('m');
        } else {
            $month = $this->uri->segment(4);
        }

        $data['month'] = $month;

        var_dump($this->get_calendar_data($year, $month));

        $prefs = array(
            'start_day' => 'monday',
            'show_next_prev' => true,
            'day_type' => 'long',
            'next_prev_url' => base_url('dashboard/calendar')
        );

        $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}
        ';

        $this->calendar->initialize($prefs);

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

            $this->update_calendar_event($year, $month);

        }

        $data = $this->get_calendar_data($year, $month);

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

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

    public function update_calendar_event($year, $month) {
        $date = $year .'-'. $month .'-'. $this->input->post('day');

        $calendar = array(
            'year' => $year,
            'month' => $month,
            'day' => $this->input->post('day', TRUE),
            'data' => $this->input->post('data')
        );

        $this->db->where('date', $date);
        $this->db->update('calendar', $calendar);
    }

    public function get_calendar_data($year, $month) {
        $cell_data = array();
        $this->db->select('*');
        $this->db->from('calendar');
        $this->db->where('year', $year);
        $this->db->where('month', $month);
        $query = $this->db->get();

        foreach ($query->result() as $result) {
            $cell_data[$result->day] = $result->data;
        }

        return $cell_data;
    }

    public function check_calendar_event($year, $month, $day) {
        $date = $year .'-'. $month .'-'. $day;
        $this->db->select('year, month, day');
        $this->db->from('calendar');
        $this->db->where('date', $date);
        $results = $this->db->count_all_results();

        return $results;
    }
} 

查看

<div class="panel panel-default">
<div class="panel-heading">
<h1 class="panel-title">Calendar</h1>
</div>
<div class="panel-body">
<?php echo $calendar;?>
</div>
</div>

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

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

        day_num = $(this).find('.day_num').html();
        day_data = prompt('Enter Event', $(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>

1 个答案:

答案 0 :(得分:1)

为什么遇到这个问题可能有几种选择。通过检查传递给您的控制器day_num来确定哪一个开始?这样做:

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

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

        day_num  = $(this).find('.day_num').html();
        day_data = prompt('Enter Event', $(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(); turn off the reload for now.
                    alert(day_num); //what does this alert show?
                }
            });
        }
    });
});

并对警报显示的内容发表评论?号码18或整个HTML所以我知道如何帮助你..