码迷,mamicode.com
首页 > Web开发 > 详细

PHP设计日历类一 (38)

时间:2015-05-31 13:47:27      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:

由两个文件组成:

第一个test.php

<style>
    table {
        border:1px solid #050;
    }

    .fontb {
        color:white;
        background:blue;
    }
    

    th {
        width:30px;
    }

    td,th {
        height:30px;
        text-align:center;
        
    }
    form {
        margin:0px;
        padding:0px;
    }
</style>
<?php
    include "calendar.class.php";

    $calendar=new Calendar;

    $calendar->out();

第二个日历类:calendar.class.php

<?php
class Calendar {
        private $year; //当前的年
        private $month; //当前的月
        private $start_weekday; //当月的第一天对应的是周几
        private $days; //当前月一共多少天

        function __construct(){
            $this->year=isset($_GET["year"]) ? $_GET["year"] : date("Y");
            $this->month=isset($_GET["month"]) ? $_GET["month"] : date("m");
            
            $this->start_weekday=date("w", mktime(0, 0, 0, $this->month, 1, $this->year));
            $this->days=date("t", mktime(0, 0, 0, $this->month, 1, $this->year));
        }

        function out(){
            echo <table align="center">;
            $this->chageDate("test.php");
            $this->weeksList();
            $this->daysList();
            echo </table>;
        }

        private function weeksList(){
            $week=array(,,,,,,);

            echo <tr>;
            for($i=0; $i<count($week); $i++)
                echo <th class="fontb">.$week[$i].</th>;

            echo </tr>;
        }

        private function daysList(){
            echo <tr>;
            //输出空格(当前一月第一天前面要空出来)
            for($j=0; $j<$this->start_weekday; $j++)
                echo <td>&nbsp;</td>;


            for($k=1; $k<=$this->days; $k++){
                $j++;
                if($k==date(d))
                    echo <td class="fontb">.$k.</td>;
                else
                    echo <td>.$k.</td>;

                if($j%7==0)
                    echo </tr><tr>;
                
            }

            //后面几个空格
            while($j%7!==0){
                echo <td>&nbsp;</td>;
                $j++;
            }

            echo </tr>;
        }

        private function prevYear($year, $month){
            $year=$year-1;
            
            if($year < 1970)
                $year = 1970;

            return "year={$year}&month={$month}";    
        }


        private function prevMonth($year, $month){
            if($month == 1) {
                $year = $year -1;
        
                if($year < 1970)
                    $year = 1970;

                $month=12;
            }else{
                $month--;
            }

            return "year={$year}&month={$month}";    
        }


        private function nextYear($year, $month){
            $year = $year + 1;

            if($year > 2038)
                $year = 2038;

            return "year={$year}&month={$month}";    
        }


        private function nextMonth($year, $month){
            if($month==12){
                $year++;

                if($year > 2038)
                    $year=2038;

                $month=1;
            }else{
                $month++;
            }
            

            return "year={$year}&month={$month}";    
        }

        private function chageDate($url=""){
            echo <tr>;
            echo <td><a href="?.$this->prevYear($this->year, $this->month).">.<<.</a></td>;
            echo <td><a href="?.$this->prevMonth($this->year, $this->month).">.<.</a></td>;
            echo <td colspan="3">;
            echo <form>;
            echo <select name="year" onchange="window.location=\‘.$url.?year=\‘+this.options[selectedIndex].value+\‘&month=.$this->month.\‘">;
            for($sy=1970; $sy <= 2038; $sy++){
                $selected = ($sy==$this->year) ? "selected" : "";
                echo <option .$selected. value=".$sy.">.$sy.</option>;
            }
            echo </select>;
            echo <select name="month"  onchange="window.location=\‘.$url.?year=.$this->year.&month=\‘+this.options[selectedIndex].value">;
            for($sm=1; $sm<=12; $sm++){
                $selected1 = ($sm==$this->month) ? "selected" : "";
                echo <option .$selected1. value=".$sm.">.$sm.</option>;
            }
            echo </select>;
            echo </form>;    
            echo </td>;


            echo <td><a href="?.$this->nextYear($this->year, $this->month).">.>>.</a></td>;
            echo <td><a href="?.$this->nextMonth($this->year, $this->month).">.>.</a></td>;
            echo </tr>;
        }

    }

 效果:

技术分享

PHP设计日历类一 (38)

标签:

原文地址:http://www.cnblogs.com/zhenghongxin/p/4541782.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!