Php 如何修改CodeIgniter日历以每天处理多个事件?
我正在创建一个没有jquery日历插件的日历。我可以将数据库中的数据检索到日历中。但是,当每天有多个数据时,日历视图中只有一个数据。当有多个数据时,我希望它是这样的 但我得到的是当有多个数据时 第16天有四个数据,但它只显示一个。如果有人对此有想法的话,我会帮你的 下面是我的代码 控制器Php 如何修改CodeIgniter日历以每天处理多个事件?,php,codeigniter,calendar,Php,Codeigniter,Calendar,我正在创建一个没有jquery日历插件的日历。我可以将数据库中的数据检索到日历中。但是,当每天有多个数据时,日历视图中只有一个数据。当有多个数据时,我希望它是这样的 但我得到的是当有多个数据时 第16天有四个数据,但它只显示一个。如果有人对此有想法的话,我会帮你的 下面是我的代码 控制器 <?php class My_calendar extends CI_Controller { public function index($year = null, $month = n
<?php
class My_calendar extends CI_Controller {
public function index($year = null, $month = null) {
echo "My calendar project";
$this->showcal($year, $month);
}
public function showcal($year = null, $month = null) {
$this->load->model('mycal_model');
$data['calendar'] = $this->mycal_model->generate($year, $month);
$this->load->view('mycal', $data);
}
}
型号
<?php
class mycal_model extends CI_Model {
function __construct() {
parent::__construct();
$this->mycal_model();
}
function mycal_model() {
$this->conf = array(
'show_next_prev' => True,
'next_prev_url' => base_url() . 'index.php/my_calendar/index/'
);
$this->conf['template'] = '
{table_open}<table cellpadding="1" cellspacing="2" class="calendar">{/table_open}
{heading_row_start}<tr>{/heading_row_start}
{heading_previous_cell}<th class="prev_sign"><a href="{previous_url}"><<</a></th>{/heading_previous_cell}
{heading_title_cell}<th colspan="{colspan}">{heading}</th>{/heading_title_cell}
{heading_next_cell}<th class="next_sign"><a href="{next_url}">>></a></th>{/heading_next_cell}
{heading_row_end}</tr>{/heading_row_end}
//Deciding where to week row start
{week_row_start}<tr class="week_name" >{/week_row_start}
//Deciding week day cell and week days
{week_day_cell}<td >{week_day}</td>{/week_day_cell}
//week row end
{week_row_end}</tr>{/week_row_end}
{cal_row_start}<tr class= "days">{/cal_row_start}
{cal_cell_start}<td>{/cal_cell_start}
{cal_cell_content}
<div class="day_num">{day}
</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}</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>{/table_close}
';
}
function get_calendar_data($year, $month) {
$query = $this->db->select('date_cal,title,type')->from('reservations')->like('date', "$year-$month", 'after')->get();
$cal_data = array();
foreach ($query->result() as $row) {
if ($row->title == 'GK' && $row->type == 'AM') {
$cal_data[substr($row->date_cal, 8, 2)] = '<div class="gk_am">' . $row->title . ' ' . $row->type . '</div>';
} else if ($row->title == 'GK' && $row->type == 'PM') {
$cal_data[substr($row->date_cal, 8, 2)] = '<div class="gk_pm">' . $row->title . ' ' . $row->type . '</div>';
} else if ($row->title == 'RP' && $row->type == 'AM') {
$cal_data[substr($row->date_cal, 8, 2)] = '<div class="rp_am">' . $row->title . ' ' . $row->type . '</div>';
} else if ($row->title == 'RP' && $row->type == 'PM') {
$cal_data[substr($row->date_cal, 8, 2)] = '<div class="rp_pm">' . $row->title . ' ' . $row->type . '</div>';
}
}
return $cal_data;
}
function generate($year, $month) {
$this->load->library('calendar', $this->conf);
$cal_data = $this->get_calendar_data($year, $month);
return $this->calendar->generate($year, $month, $cal_data);
}
}
?>
如果要显示包含数据的日期的所有四个框,请尝试更改每个框的get_calendar_data(),如下所示
$content = "";
$lastDay = -1;
$index = 0;
foreach ($query->result() as $row) {
if($lastDay != intval(substr($row->date_cal, 8, 2))){
if($index > 0 ){
if($content != ''){
$cal_data[$lastDay] = $content;
$content = '';
}
}
$index = 0;
}
if ($row->title == 'GK' && $row->type == 'AM') {
$content .= '<div class="gk_am">' . $row->title . ' ' . $row->type . '</div>';
} else if ($row->title == 'GK' && $row->type == 'PM') {
$content .= '<div class="gk_pm">' . $row->title . ' ' . $row->type . '</div>';
}else if ($row->title == 'RP' && $row->type == 'AM') {
$content .= '<div class="rp_am">' . $row->title . ' ' . $row->type . '</div>';
} else if ($row->title == 'RP' && $row->type == 'PM') {
$content .= '<div class="rp_pm">' . $row->title . ' ' . $row->type . '</div>';
}
$lastDay = intval(substr($row->date_cal, 8, 2));
$index++;
}
if($lastDay != -1 && $content != ''){
$cal_data[$lastDay] = $content;
}
$content=”“;
$lastDay=-1;
$index=0;
foreach($query->result()作为$row){
如果($lastDay!=intval(substr($row->date_-cal,8,2)){
如果($index>0){
如果($content!=''){
$calu data[$lastDay]=$content;
$content='';
}
}
$index=0;
}
如果($row->title=='GK'&&$row->type=='AM'){
$content.=''.$row->title'.$row->type'.';
}如果($row->title='GK'&&$row->type=='PM'){
$content.=''.$row->title'.$row->type'.';
}如果($row->title='RP'&&$row->type='AM'){
$content.=''.$row->title'.$row->type'.';
}如果($row->title='RP'&&$row->type=='PM'){
$content.=''.$row->title'.$row->type'.';
}
$lastDay=intval(substr($row->date_-cal,8,2));
$index++;
}
如果($lastDay!=-1&&$content!=''){
$calu data[$lastDay]=$content;
}
让我知道它现在是否有效
$content = "";
$lastDay = -1;
$index = 0;
foreach ($query->result() as $row) {
if($lastDay != intval(substr($row->date_cal, 8, 2))){
if($index > 0 ){
if($content != ''){
$cal_data[$lastDay] = $content;
$content = '';
}
}
$index = 0;
}
if ($row->title == 'GK' && $row->type == 'AM') {
$content .= '<div class="gk_am">' . $row->title . ' ' . $row->type . '</div>';
} else if ($row->title == 'GK' && $row->type == 'PM') {
$content .= '<div class="gk_pm">' . $row->title . ' ' . $row->type . '</div>';
}else if ($row->title == 'RP' && $row->type == 'AM') {
$content .= '<div class="rp_am">' . $row->title . ' ' . $row->type . '</div>';
} else if ($row->title == 'RP' && $row->type == 'PM') {
$content .= '<div class="rp_pm">' . $row->title . ' ' . $row->type . '</div>';
}
$lastDay = intval(substr($row->date_cal, 8, 2));
$index++;
}
if($lastDay != -1 && $content != ''){
$cal_data[$lastDay] = $content;
}