程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP設計日歷類一 (38),日歷38

PHP設計日歷類一 (38),日歷38

編輯:關於PHP編程

PHP設計日歷類一 (38),日歷38


由兩個文件組成:

第一個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>';
        }

    }

 效果:

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved