2015-12-16 43 views
0

我想更新一些日曆數據到數據庫。但每次我更新更新我的日柱18<span class="label label-danger" xss=removed>Notice</span>更新只應與數當我更新數據它不更新正確Codeigniter

更新日列,我不知道爲什麼$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) 

Quesions:

  1. 怎麼可能只更新數天列,而不是與跨度?
  2. 什麼可能導致它的跨度更新數字?

嘗試:

$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

可能有幾個選項,爲什麼你有這個問題。通過檢查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所以我知道如何幫助你..