我目前正在研究 codeIgniter 3 日历库,我可以在该月的每一天向数据库添加新的信息行
如果一天有 2 行插入,我应该能够看到那天的两个日历事件。
2015-12-25 必须有行,如图所示。
我希望能够展示而不是仅仅展示一个事件,而是展示那天发生的事情。
问题:如何让 get_calendar_data 函数能够获取日历当天的行。目前在 2015-12-25 它只显示一行。
获取数据功能
public function get_calendar_data($year, $month) {
$cell_data = array();
$query = $this->db->get('calendar');
if ($query->num_rows() > 0) {
$row = $query->row();
$this->db->select('*');
$this->db->from('calendar');
$this->db->where('year', $year);
$this->db->where('month', $month);
$this->db->where('day', $row->day);
$query = $this->db->get();
foreach ($query->result() as $result) {
$cell_data[$result->day] = $result->data;
}
return $cell_data;
}
}
控制器
<?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;
$prefs = array(
'start_day' => 'monday',
'show_next_prev' => true,
'day_type' => 'long',
'next_prev_url' => base_url('dashboard/calendar')
);
$prefs['template'] = '
{table_open}<div class="table-responsive"><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_number">{day}</div>
<div class="content" style="margin-top: 10px;">{content}</div>
{/cal_cell_content}
{cal_cell_content_today}
<div class="day_number highlight">{day}</div>
<div class="content" style="margin-top: 10px;">{content}</div>
{/cal_cell_content_today}
{cal_cell_no_content}
<div class="day_number">{day}</div>
{/cal_cell_no_content}
{cal_cell_no_content_today}
<div class="day_number highlight">{day}</div>
{/cal_cell_no_content_today}
{cal_cell_blank} {/cal_cell_blank}
{cal_cell_end}</td>{/cal_cell_end}
{cal_row_end}</tr>{/cal_row_end}
{table_close}</table></div>{/table_close}
';
$this->calendar->initialize($prefs);
$this->delete_calendar_event();
if ($this->input->post('day')) {
//if ($this->check_calendar_event($year, $month, $this->input->post('day'))) {
// $this->update_calendar_event($year, $month);
//} else {
$this->add_calendar_event($year, $month);
//}
}
$data = $this->get_calendar_data($year, $month);
$data['calendar'] = $this->calendar->generate($year, $month, $data);
if ($this->uri->segment(3) == TRUE) {
$data['view_more'] = site_url('report/events/'. $year .'/'. $month);
} else {
$data['view_more'] = site_url('report/events');
}
$date = date('Y-m-d', mktime(0, 0, 0, date('m'), date('d') + 3, date('Y')));
//echo $date;
// echo '<br/>';
//echo $this->test();
$this->load->view('dashboard/calender_view', $data);
}
public function test() {
$date = date('Y-m-d', mktime(0, 0, 0, date('m'), date('d') + 3, date('Y')));
$this->db->where('date <', $date);
$query = $this->db->get('calendar');
return $query->num_rows();
}
public function add_calendar_event($year, $month) {
$date = $year .'-'. $month .'-'. $this->input->post('day');
$calendar = array(
'year' => $year,
'month' => $month,
'day' => $this->input->post('day', TRUE),
'date' => $date,
'data' => $this->input->post('event_data')
);
$this->db->insert('calendar', $calendar);
}
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('event_data')
);
$this->db->where('date', $date);
$this->db->update('calendar', $calendar);
}
public function delete_calendar_event() {
$this->db->where("date <", date('Y-m-d'));
$this->db->or_where('data', '');
$this->db->delete('calendar');
}
public function get_calendar_data($year, $month) {
$cell_data = array();
$query = $this->db->get('calendar');
if ($query->num_rows() > 0) {
$row = $query->row();
$this->db->select('*');
$this->db->from('calendar');
$this->db->where('year', $year);
$this->db->where('month', $month);
$this->db->where('day', $row->day);
$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;
}
public function check_calendar_event_date() {
}
}