Php Codeigniter日历未显示正确的数据,设置的限制不起作用
我正在使用CodeIgniter库 我有两个从数据库中获取日历数据的表Php Codeigniter日历未显示正确的数据,设置的限制不起作用,php,codeigniter,Php,Codeigniter,我正在使用CodeIgniter库 我有两个从数据库中获取日历数据的表 事件表 额外事件表 问题是,我有两个foreach循环,第二个foreach循环$query2->result\u array()它不允许我从数据库表extra\u events中获取每天的第一个事件,我还试图从extra events表中设置限制,但不起作用 从extra_events表 范例 Test 2 | Example 2 | Example 3 它应该产生 Test 1 | Example 1 &
$query2->result\u array()
它不允许我从数据库表extra\u events
中获取每天的第一个事件,我还试图从extra events表中设置限制,但不起作用
从extra_events
表
范例
Test 2 | Example 2
| Example 3
它应该产生
Test 1 | Example 1 <!-- Missing
Test 2 | Example 2
| Example 3
test1 |示例1您可以将foreach限制为仅获取2个事件
限制get_events()函数中的foreach循环
public function get_events($year, $month) {
$calendar = array();
$this->db->where('year', $year);
$this->db->where('month', $month);
$query = $this->db->get('events');
$results = $query->result_array();
$i = 0;
foreach ($results as $event) {
if ($i < 2) { // getting / fetching / extracting value from foreach for 2 times only
if (array_key_exists($event['day'], $calendar)) {
$calendar[$event['day']] = $calendar[$event['day']] . '
<hr/>
<div class="text-center">
<span class="label label-info">New</span>
</div>
<br/>
<div class="clearfix">
<div class="pull-left">
<ul class="list-unstyled text-center">
<li >'
. word_limiter(anchor(base_url('report/events/' . $year . '/' . $month . '/?event_id=' . $event['events_id']), $event['event']), 4) . '
</li>
</ul>
</div>
<div class="pull-right">
<form id="form-event" action="' . base_url('dashboard/calendar') . '" class="form-inline" method="post" enctype="multipart/form-data" onsubmit="return confirm(\'Are you sure you want to remove this!\')";>
<input type="hidden" name="delete_id" value="' . $event['events_id'] . '">
<a href="' . base_url('report/events/edit' . '/?event_id=' . $event['events_id']) . '" role="button" class="btn btn-primary"><i class="fa fa-pencil"></i></a>
<button type"submit" class="btn btn-danger"><i class="fa fa-trash"></i></button>
</form>
</div>
</div>';
} else {
$calendar[$event['day']] = '
<div class="text-center">
<span class="label label-info">New</span>
</div>
<br/>
<div class="clearfix">
<div class="pull-left">
<ul class="list-unstyled text-center">
<li >'
. word_limiter(anchor(base_url('report/events/' . $year . '/' . $month . '/?event_id=' . $event['events_id']), $event['event']), 4) . '
</li>
</ul>
</div>
<div class="pull-right">
<form id="form-event" action="' . base_url('dashboard/calendar') . '" class="form-inline" method="post" enctype="multipart/form-data" onsubmit="return confirm(\'Are you sure you want to remove this!\')";>
<input type="hidden" name="delete_id" value="' . $event['events_id'] . '">
<a href="' . base_url('report/events/edit' . '/?event_id=' . $event['events_id']) . '" role="button" class="btn btn-primary"><i class="fa fa-pencil"></i></a>
<button type"submit" class="btn btn-danger"><i class="fa fa-trash"></i></button>
</form>
</div>
</div>
';
}
$i++;
}
}
return $calendar;
}
公共函数获取事件($year,$month){
$calendar=array();
$this->db->where('year',$year);
$this->db->where('month',$month);
$query=$this->db->get('events');
$results=$query->result_array();
$i=0;
foreach($results as$event){
如果($i<2){//仅从foreach获取/获取/提取值2次
如果(数组键存在($event['day',$calendar)){
$calendar[$event['day']=$calendar[$event['day']].'
新的
- '
.word_limitor(锚定(基本url('report/events/'.$year./'.$month./'.$event.'./'.$id='.$event['events\u id']),$event['event']),4)。'
';
}否则{
$calendar[$event['day']]='
新的
- '
.word_limitor(锚定(基本url('report/events/'.$year./'.$month./'.$event.'./'.$id='.$event['events\u id']),$event['event']),4)。'
';
}
$i++;
}
}
返回$calendar;
}
现在解决
我必须创建两个表,然后在模型函数中添加这一行
$calendar[$event['day']]='
'$事件[‘事件’]代码>
下面第一个foreach用于主事件,然后任何其他额外事件使用第二个foreach和数组键exists
这现在也让我可以控制现在额外显示的行数
每个循环的事件
公共函数获取日历事件($year,$month){
$calendar=array();
$events=$this->get_events($year,$month);
foreach($events作为$event){
//添加了主日历事件的行
$calendar[$event['day']='
'。$event['event'];
//将主事件id传递给extra_events get函数
$extra_events=$this->get_extra_events($event['events\u id');
//检查side foreach循环中是否存在额外事件的数组键
foreach($extra\u事件作为$extra\u事件){
如果(数组键存在($extra_event['day',$calendar)){
$calendar[$extra_event['day']]=$calendar[$extra_event['day'].
。$extra_event['event'];
}否则{
$calendar[$extra_event['day']]=$extra_event['event'];
}
}
}
返回$calendar;
}
日历型号
<?php
class Model_calendar extends CI_Model {
public function add_event() {
$data = array(
'year' => $this->input->post('year'),
'month' => ($this->input->post('month') > 10) ? $this->input->post('month') : '0' . $this->input->post('month'),
'day' => $this->input->post('day'),
'date' => $this->input->post('year') .'-'. $this->input->post('month') .'-'. $this->input->post('day'),
'event' => $this->input->post('event'),
'date_added' => mdate('%Y-%m-%d %H:%i:%s', now())
);
$this->db->insert($this->db->dbprefix . 'events', $data);
}
public function add_extra_event() {
$data = array(
'events_id' => (int)$this->get_event_id(),
'year' => $this->input->post('year'),
'month' => ($this->input->post('month') > 10) ? $this->input->post('month') : '0' . $this->input->post('month'),
'day' => $this->input->post('day'),
'date' => $this->input->post('year') .'-'. $this->input->post('month') .'-'. $this->input->post('day'),
'event' => $this->input->post('event'),
'date_added' => mdate('%Y-%m-%d %H:%i:%s', now())
);
$this->db->insert($this->db->dbprefix . 'extra_events', $data);
}
public function get_event_id() {
$this->db->where('year', $this->input->post('year'));
$this->db->where('month', ($this->input->post('month') > 10) ? $this->input->post('month') : '0' . $this->input->post('month'));
$this->db->where('day', $this->input->post('day'));
$query = $this->db->get($this->db->dbprefix . 'events');
if ($query->num_rows() > 0) {
$row = $query->row();
return $row->events_id;
} else {
return false;
}
}
public function check_event() {
$this->db->where('year', $this->input->post('year'));
$this->db->where('month', ($this->input->post('month') > 10) ? $this->input->post('month') : '0' . $this->input->post('month'));
$this->db->where('day', $this->input->post('day'));
$query = $this->db->get($this->db->dbprefix . 'events');
if ($query->num_rows() > 0) {
return TRUE;
} else {
return FALSE;
}
}
public function delete_events() {
$this->db->where("date <", date('Y-m-d'));
$this->db->delete($this->db->dbprefix . 'events');
}
public function delete_extra_events() {
$this->db->where("date <", date('Y-m-d'));
$this->db->delete($this->db->dbprefix . 'extra_events');
}
public function get_calendar_events($year, $month) {
$calendar = array();
$events = $this->get_events($year, $month);
foreach($events as $event) {
$calendar[$event['day']] = '<br/>' . $event['event'];
$extra_events = $this->get_extra_events($event['events_id']);
foreach($extra_events as $extra_event) {
if (array_key_exists($extra_event['day'], $calendar)) {
$calendar[$extra_event['day']] = $calendar[$extra_event['day']] . '<br/>' . $extra_event['event'];
} else {
$calendar[$extra_event['day']] = $extra_event['event'];
}
}
}
return $calendar;
}
public function get_events($year, $month) {
$this->db->where('year', $year);
$this->db->where('month', $month);
$events = $this->db->get($this->db->dbprefix . 'events');
return $events->result_array();
}
public function get_extra_events($events_id) {
$this->db->limit(5);
$this->db->where('events_id', $events_id);
$extra_events = $this->db->get($this->db->dbprefix . 'extra_events');
return $extra_events->result_array();
}
}
只需在get_events()函数中限制foreach函数。您可以使用迭代变量$i=0来限制foreach;并在$i<1时运行foreach;我希望它能为你工作。@AliShan你能用我的代码显示它吗。@wolfgang1983嘿,你能用一个你所期望的再清楚一点吗。以及添加print\r($query->result\u array())
resulttoo@Abdulla我已经更新了question@wolfgang1983你也可以发布这个数组输出吗$query1->result\u array()
和$query2->result\u array()
不起作用,由于某些原因,现在只显示整个日历中的两个结果。在26天的日历上,如图所示,有3个日历应该显示2您可以通过Skype VuProjects与我联系14抱歉,目前无法联系。
public function get_calendar_events($year, $month) {
$calendar = array();
$events = $this->get_events($year, $month);
foreach($events as $event) {
// Added line for main calendar event
$calendar[$event['day']] = '<br/>' . $event['event'];
// Passes main event id to extra_events get function
$extra_events = $this->get_extra_events($event['events_id']);
// checks if array key exists for extra event in side foreach loop
foreach($extra_events as $extra_event) {
if (array_key_exists($extra_event['day'], $calendar)) {
$calendar[$extra_event['day']] = $calendar[$extra_event['day']] . '<br/>' . $extra_event['event'];
} else {
$calendar[$extra_event['day']] = $extra_event['event'];
}
}
}
return $calendar;
}
<?php
class Model_calendar extends CI_Model {
public function add_event() {
$data = array(
'year' => $this->input->post('year'),
'month' => ($this->input->post('month') > 10) ? $this->input->post('month') : '0' . $this->input->post('month'),
'day' => $this->input->post('day'),
'date' => $this->input->post('year') .'-'. $this->input->post('month') .'-'. $this->input->post('day'),
'event' => $this->input->post('event'),
'date_added' => mdate('%Y-%m-%d %H:%i:%s', now())
);
$this->db->insert($this->db->dbprefix . 'events', $data);
}
public function add_extra_event() {
$data = array(
'events_id' => (int)$this->get_event_id(),
'year' => $this->input->post('year'),
'month' => ($this->input->post('month') > 10) ? $this->input->post('month') : '0' . $this->input->post('month'),
'day' => $this->input->post('day'),
'date' => $this->input->post('year') .'-'. $this->input->post('month') .'-'. $this->input->post('day'),
'event' => $this->input->post('event'),
'date_added' => mdate('%Y-%m-%d %H:%i:%s', now())
);
$this->db->insert($this->db->dbprefix . 'extra_events', $data);
}
public function get_event_id() {
$this->db->where('year', $this->input->post('year'));
$this->db->where('month', ($this->input->post('month') > 10) ? $this->input->post('month') : '0' . $this->input->post('month'));
$this->db->where('day', $this->input->post('day'));
$query = $this->db->get($this->db->dbprefix . 'events');
if ($query->num_rows() > 0) {
$row = $query->row();
return $row->events_id;
} else {
return false;
}
}
public function check_event() {
$this->db->where('year', $this->input->post('year'));
$this->db->where('month', ($this->input->post('month') > 10) ? $this->input->post('month') : '0' . $this->input->post('month'));
$this->db->where('day', $this->input->post('day'));
$query = $this->db->get($this->db->dbprefix . 'events');
if ($query->num_rows() > 0) {
return TRUE;
} else {
return FALSE;
}
}
public function delete_events() {
$this->db->where("date <", date('Y-m-d'));
$this->db->delete($this->db->dbprefix . 'events');
}
public function delete_extra_events() {
$this->db->where("date <", date('Y-m-d'));
$this->db->delete($this->db->dbprefix . 'extra_events');
}
public function get_calendar_events($year, $month) {
$calendar = array();
$events = $this->get_events($year, $month);
foreach($events as $event) {
$calendar[$event['day']] = '<br/>' . $event['event'];
$extra_events = $this->get_extra_events($event['events_id']);
foreach($extra_events as $extra_event) {
if (array_key_exists($extra_event['day'], $calendar)) {
$calendar[$extra_event['day']] = $calendar[$extra_event['day']] . '<br/>' . $extra_event['event'];
} else {
$calendar[$extra_event['day']] = $extra_event['event'];
}
}
}
return $calendar;
}
public function get_events($year, $month) {
$this->db->where('year', $year);
$this->db->where('month', $month);
$events = $this->db->get($this->db->dbprefix . 'events');
return $events->result_array();
}
public function get_extra_events($events_id) {
$this->db->limit(5);
$this->db->where('events_id', $events_id);
$extra_events = $this->db->get($this->db->dbprefix . 'extra_events');
return $extra_events->result_array();
}
}
<?php
class Calendar extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load->model('dashboard/model_calendar');
$this->load->library('calendar');
$this->load->library('form_validation');
}
public function index() {
if ($this->uri->segment(3) == FALSE) {
$year = date('Y');
} else {
$year = $this->uri->segment(3);
}
if ($this->uri->segment(4) == FALSE) {
$month = date('m');
} else {
$month = $this->uri->segment(4);
}
$prefs = array(
'start_day' => 'monday',
'show_next_prev' => true,
'month_type' => 'long',
'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-hover 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 class="text-center" style="height: 5rem;">{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: 0;">{content}</div>
{/cal_cell_content}
{cal_cell_content_today}
<div class="day_number highlight">{day}</div>
<div class="content" style="margin-top: 0;">{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->model_calendar->delete_events();
$this->model_calendar->delete_extra_events();
$events = $this->model_calendar->get_calendar_events($year, $month);
$data['calendar'] = $this->calendar->generate($year, $month, $events);
if ($this->uri->segment(3) == TRUE) {
$data['view_more'] = site_url('report/events/'. $year .'/'. $month);
} else {
$data['view_more'] = site_url('report/events');
}
$this->form_validation->set_rules('event', 'Calendar Event', 'trim|required');
if ($this->form_validation->run() == FALSE) {
$this->load->view('dashboard/calender_view', $data);
} else {
if ($this->model_calendar->check_event() == TRUE) {
$this->model_calendar->add_extra_event();
} else {
$this->model_calendar->add_event();
}
$this->session->set_flashdata('added_event', '<i class="fa fa-check-circle"></i> You have added event to your calendar!');
redirect('common/dashboard');
}
}
}