gpt4 book ai didi

Codeigniter 日历 - 如何在同一页面上显示 2 个月的日历?

转载 作者:行者123 更新时间:2023-12-05 06:46:38 27 4
gpt4 key购买 nike

大家好,感谢您花时间阅读我的问题。

我正在尝试创建一个事件日历,用户可以在其中将数据输入到日历中。

如何在同一页面上显示两个月的日历(例如并排显示 2012 年 12 月和 2013 年 1 月,而不是通过链接。)

我已经从 http://net.tutsplus.com/tutorials/php/codeigniter-from-scratch-the-calendar-library/ 获得了我的代码

非常感谢任何帮助。 =)

//CONTROLLER

Mycal 类扩展了 CI_Controller {

public function index() {
$this->display();
}

function display($year = null, $month = null){

if (!$year) {
$year = date('Y');
}
if (!$month) {
$month = date('m');
}

$this->load->model('Mycal_model');

if($day = $this->input->post('day')){
$this->Mycal_model->add_calendar_data(
"$year-$month-$day",
$this->input->post('data')
);
}

$data['calendar'] = $this->Mycal_model->generate($year, $month);

$this->load->view('mycal_view', $data);
}

//型号

类 Mycal_model 扩展 CI_Model{

function get_calendar_data($year, $month){

$query = $this->db->select('date, data')->from('calendar')
->like('date', "$year-$month", 'after')->get();

$cal_data = array();

foreach ($query->result() as $row){
$cal_data[substr($row->date,8,2)] = $row->data;
}

return $cal_data;
}

function add_calendar_data($date, $data){

if($this->db->select('date')->from('calendar')
->where('date', $date)->count_all_results()) {

$this->db->where('date', $date)->update('calendar', array(
'date'=>$date,
'data'=>$data
));

}else{

$this->db->insert('calendar', array(
'date'=>$date,
'data'=>$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)
}

function generate ($year, $month){
// to generate 2nd calendar for the next month?
$this->load->library('calendar', $this->conf);
$cal_data = $this->get_calendar_data($year, $month+1);
return $this->calendar->generate($year, $month+1, $cal_data)
}

// View

<?php echo $calendar; ?>

// to generate 2nd calendar for the next month?
<?php echo $calendar2; ?>

<script type="text/javascript">
$(document).ready(function() {
$('.calendar .day').click(function() {
day_num = $(this).find('.day_num').html();
day_data = prompt('Enter Stuff', $(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>

最佳答案

我以前没有使用过 ci 日历,但是用两个月的时间来访问一个页面应该很简单。

您需要为日历创建一个两页布局,例如:

查看 two_page_calendar.php

<div id="month1">
<?=$month1; ?>
</div>

<div id="month2">
<?=$month2; ?>
</div>

然后我会更改您的显示函数以将显示作为数据返回。例如

function build_display($year = null, $month = null){

if (!$year) {
$year = date('Y');
}
if (!$month) {
$month = date('m');
}

$this->load->model('Mycal_model');

if($day = $this->input->post('day')){
$this->Mycal_model->add_calendar_data(
"$year-$month-$day",
$this->input->post('data')
);
}

$data['calendar'] = $this->Mycal_model->generate($year, $month);

$calendar_view = $this->load->view('mycal_view', $data, true);
return $calendar_view;
}

现在您可以调用每个月的构建显示并将其加载到您的组合 View 中:

public function index() {
$month2_year = date("Y",strtotime("+1 month"));
$month2_month = date("m",strtotime("+1 month"));
$cal_data['month1'] = $this->build_display();
$cal_data['month2'] = $this->build_display($month2_year, $month2_month);
$this->load->view('two_page_calendar', $cal_data);
}

我还没有尝试过,但它应该可以工作,您必须更改一些方法才能使它们正常工作,例如日历分页。

注意你永远不应该像模型中那样重复代码,你当然不能在任何类中有两个同名的方法(删除重复的生成方法),整个目的是将年和月参数传递给该方法,这样它就可以可在任何年/月重复使用

关于Codeigniter 日历 - 如何在同一页面上显示 2 个月的日历?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14038628/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com