2015-06-22 260 views
0

我正在創建一個沒有jQuery日曆插件的日曆。我可以將數據庫中的數據檢索到日曆。但是當每天有多個數據時,只有一個數據進入日曆視圖。當有多個數據時,我希望它是這樣的。如何修改CodeIgniter日曆以每天處理多個事件?

expected

但是我得到是這樣的,當有多個數據

current

16天有每四個data.but它顯示只有一個。如果任何人有關於這個想法它會幫助我。

下面是我的代碼

控制器

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

} 

查看

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
     <meta charset="utf-8"> 
     <title>Welcome to CodeIgniter</title> 

     <style type="text/css"> 



      #body{ 
       margin: 0 15px 0 15px; 
      } 



      #container{ 
       margin: 10px; 
       border: 1px solid #D0D0D0; 
       -webkit-box-shadow: 0 0 8px #D0D0D0; 
      } 


      .calendar{ 
       /*   background-color: yellow;*/ 
      } 
      table.calendar{ 
       margin: auto; 
       border-collapse: collapse; 
      } 
      .calendar .days td { 
       width:80px; 
       height: 90px; 
       padding: 4px; 
       border: 1px solid #999; 
       vertical-align: top; 
       background-color: #DEF; 

      } 
      .calendar .days td:hover{ 
       background-color: #fff; 
      } 
      .calendar .highlight { 
       font-weight: bold; 
       color: #EF1BAC; 
      } 
      .calendar .content .gk_am{ 
       float: left; 
       display: inline-block; 
       width: 40px; 
       background-color: #D0D0D0; 
      } 
      .calendar .content .gk_pm{ 
       float: right; 
       display: inline-block; 
       width: 40px; 
       background-color: red; 
      } 

      .calendar .content .rp_am{ 
       float: left; 
       display: inline-block; 
       width: 40px; 
       background-color: gray; 
      } 

      .calendar .content .rp_pm{ 
       float: right; 
       display: inline-block; 
       width: 40px; 
       background-color: #D893A1; 
      } 
     </style> 
    </head> 
    <body> 

     <div id="container"> 

      <div id="body"> 
       <?PHP echo $calendar; ?> 

      </div> 


     </div> 

    </body> 
</html> 

型號

<?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}">&lt;&lt;</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}">&gt;&gt;</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}&nbsp;{/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); 
    } 

} 

?> 

回答

2

如果你想顯示其有數據的日期,所有四個箱子,試圖改變get_calendar_data(),如下的foreach,

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

讓我知道它是否工作現在還是不行。

相關問題