如何在日历中链接上一个月和下个月而不刷新页面

时间:2012-07-11 10:14:06

标签: calendar

对于我的网站我用events.it做了一个日历工作正常。但我很困惑如何链接上个月和下个月与没有刷新页面的事件。我想使用ajax,但我不知道。欢迎任何帮助。提前致谢。 我的代码:

<h1><?php echo "<strong>".$current_month_text."</strong>";?></h1>
<a href="javascript:;" onclick="newCalender(<?php echo $previous_month;?>)">Previous</a>

<table cellspacing="0">
        <thead>
        <tr>
            <th>Sun</th>
            <th>Mon</th>
            <th>Tue</th>
            <th>Wed</th>
            <th>Thu</th>
            <th>Fri</th>
            <th>Sat</th>
        </tr>
        </thead>
        <tr>
            <?php

            for($i=0; $i< $total_rows; $i++)
            {
                for($j=0; $j<7;$j++)
                {
                    $day++;                 

                    if($day>0 && $day<=$total_days_of_current_month)
                    {
                        //YYYY-MM-DD date format
                        $date_form = "$current_year/$current_month/$day";

                        echo '<td';

                        //check if the date is today
                        if($date_form == $today)
                        {
                            echo ' id="today"';
                        }

                        //check if any event stored for the date
                        if(array_key_exists($day,$events))
                        {
                            //adding the date_has_event class to the <td> and close it
                            echo ' class="date_has_event"> '.$day;

                            //adding the eventTitle and eventContent wrapped inside <span> & <li> to <ul>
                            echo '<div class="events"><ul>';

                            foreach ($events as $key=>$event){
                                if ($key == $day){
                                foreach ($event as $single){ 
                                    echo '<li>';                    
                                    echo anchor("events_detail/$single->url",'<span class="title">'.$single->event_title.'</span><span class="desc">'.character_limiter(strip_tags(stripslashes($single->description)),100).'</span>');                     
                                    echo '</li>'; 
                                } // end of for each $event
                                }

                            } // end of foreach $events


                            echo '</ul></div>';
                        } // end of if(array_key_exists...)

                        else 
                        {
                            //if there is not event on that date then just close the <td> tag
                            echo '> '.$day;
                        }
                        echo "</td>";
                    }
                    else 
                    {
                        //showing empty cells in the first and last row
                        echo '<td class="padding">&nbsp;</td>';
                    }
                }
                echo "</tr><tr>";
            }


            ?>
        </tr>

    </table>

1 个答案:

答案 0 :(得分:0)

在日历视图页面中:

<div class="calender">    
<span class="detail_button_left">&nbsp;</span>
    <a class="detail_bg" id="prev_button" href="<?php echo base_url() . "calender/". $previous_month;?>" >Previous</a>
<span class="detail_button_right">&nbsp;</span>
<div class="calender_next_btn">
    <span class="detail_button_left">&nbsp;</span>
        <a class="detail_bg" id="next_button" href="<?php echo base_url() . "calender/". $next_month; ?>" >Next</a>
    <span class="detail_button_right">&nbsp;</span>
</div> 
<h1><?php echo "<strong>".$current_month_text."</strong>";?></h1>
<div class="layout-grid">
    <table cellspacing="0">
        <thead>
            <tr>
                <th>Sun</th>
                <th>Mon</th>
                <th>Tue</th>
                <th>Wed</th>
                <th>Thu</th>
                <th>Fri</th>
                <th>Sat</th>
            </tr>
    </thead>
            <tr>
                <?php
                    for($i=0; $i< $total_rows; $i++)
                        {
                            for($j=0; $j<7;$j++)
                                {
                                    $day++;                 
                                    if($day>0 && $day<=$total_days_of_current_month)
                                    {
                                        //YYYY-MM-DD date format
                    $date_form = "$current_year/$current_month/$day";
                    echo '<td';
                    //check if the date is today
                    if($date_form == $today)
                    {
                                            echo ' id="today"';
                    }
                    //check if any event stored for the date
                    if(array_key_exists($day,$events))
                    {
                                            //adding the date_has_event class to the <td> and close it
                                            echo ' class="date_has_event"> '.$day;
                        //adding the eventTitle and eventContent wrapped inside <span> & <li> to <ul>
                                            echo '<div class="events"><ul>';
                       foreach ($events as $key=>$event)
                                            {
                                                if ($key == $day)
                                                {
                                                    foreach ($event as $single)
                                                    { 
                                                        echo '<li>';                    
                            echo anchor("events_detail/$single->url",
                                                                '<span class="title">'.$single->event_title.
                                                                '</span><span class="desc">'.character_limiter(strip_tags(stripslashes($single->description)),100).
                                                                '</span>');                     
                            echo '</li>'; 
                                                    } // end of for each $event
                        }
                                            } // end of foreach $events
                                            echo '</ul></div>';
                    } // end of if(array_key_exists...)
                    else 
                    {
                                            //if there is not event on that date then just close the <td> tag
                                            echo '> '.$day;
                    }
                    echo "</td>";
                                    }else{
                    //showing empty cells in the first and last row
                    echo '<td class="padding">&nbsp;</td>';
                                    }
                }
                echo "</tr><tr>";
                            }

            ?>
          </tr>
    </table>
</div>
</div>
模型页面中的

function calender($slug=0)
    {
        $timeid = $this->uri->segment(3);
       if($timeid==0)
       {
           $time = time();
       }else{
           $time = $timeid;
       }
       if(!empty($slug)){
        $data['events']=$this->user_model->getEvents($slug);
        $today = date("Y/n/j", time());
    $data['today']= $today;
    $current_month = date("n", $slug);
    $data['current_month'] = $current_month;
    $current_year = date("Y", $slug);
    $data['current_year'] = $current_year;
    $current_month_text = date("F Y", $slug);
    $data['current_month_text'] = $current_month_text;
    $total_days_of_current_month = date("t", $slug);
    $data['total_days_of_current_month']= $total_days_of_current_month;
    $first_day_of_month = mktime(0,0,0,$current_month,1,$current_year);
    $data['first_day_of_month'] = $first_day_of_month;
    //geting Numeric representation of the day of the week for first day of the month. 0 (for Sunday) through 6 (for Saturday).
    $first_w_of_month = date("w", $first_day_of_month);
    $data['first_w_of_month'] = $first_w_of_month;
    //how many rows will be in the calendar to show the dates
    $total_rows = ceil(($total_days_of_current_month + $first_w_of_month)/7);
    $data['total_rows']= $total_rows;
    //trick to show empty cell in the first row if the month doesn't start from Sunday
    $day = -$first_w_of_month;
    $data['day']= $day;
    $next_month = mktime(0,0,0,$current_month+1,1,$current_year);
    $data['next_month']= $next_month;
    $next_month_text = date("F \'y", $next_month);
    $data['next_month_text']= $next_month_text;
    $previous_month = mktime(0,0,0,$current_month-1,1,$current_year);
    $data['previous_month']= $previous_month;
    $previous_month_text = date("F \'y", $previous_month);
    $data['previous_month_text']= $previous_month_text;
    $next_year = mktime(0,0,0,$current_month,1,$current_year+1);
    $data['next_year']= $next_year;
    $next_year_text = date("F \'y", $next_year);
    $data['next_year_text']= $next_year_text;
    $previous_year = mktime(0,0,0,$current_month,1,$current_year-1);
    $data['previous_year']=$previous_year;
    $previous_year_text = date("F \'y", $previous_year);
    $data['previous_year_text']= $previous_year_text;
       }
       else{
        $data['events']=$this->user_model->getEvents($time);
        $today = date("Y/n/j", time());
    $data['today']= $today;
    $current_month = date("n", $time);
    $data['current_month'] = $current_month;
    $current_year = date("Y", $time);
    $data['current_year'] = $current_year;
    $current_month_text = date("F Y", $time);
    $data['current_month_text'] = $current_month_text;
    $total_days_of_current_month = date("t", $time);
    $data['total_days_of_current_month']= $total_days_of_current_month;
    $first_day_of_month = mktime(0,0,0,$current_month,1,$current_year);
    $data['first_day_of_month'] = $first_day_of_month;
    //geting Numeric representation of the day of the week for first day of the month. 0 (for Sunday) through 6 (for Saturday).
    $first_w_of_month = date("w", $first_day_of_month);
    $data['first_w_of_month'] = $first_w_of_month;
    //how many rows will be in the calendar to show the dates
    $total_rows = ceil(($total_days_of_current_month + $first_w_of_month)/7);
    $data['total_rows']= $total_rows;
    //trick to show empty cell in the first row if the month doesn't start from Sunday
    $day = -$first_w_of_month;
    $data['day']= $day;
    $next_month = mktime(0,0,0,$current_month+1,1,$current_year);
    $data['next_month']= $next_month;
    $next_month_text = date("F \'y", $next_month);
    $data['next_month_text']= $next_month_text;
    $previous_month = mktime(0,0,0,$current_month-1,1,$current_year);
    $data['previous_month']= $previous_month;
    $previous_month_text = date("F \'y", $previous_month);
    $data['previous_month_text']= $previous_month_text;
    $next_year = mktime(0,0,0,$current_month,1,$current_year+1);
    $data['next_year']= $next_year;
    $next_year_text = date("F \'y", $next_year);
    $data['next_year_text']= $next_year_text;
    $previous_year = mktime(0,0,0,$current_month,1,$current_year-1);
    $data['previous_year']=$previous_year;
    $previous_year_text = date("F \'y", $previous_year);
    $data['previous_year_text']= $previous_year_text;
       }

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

其中$ slug返回下一个/上一个月的