PHP design calendar Class 1 (38), calendar 38
Consists of two files:
First 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();
The second calendar class: calendar. class. php
<? Phpclass Calendar {private $ year; // The current year's private $ month; // the current month's private $ start_weekday; // the first day of the month corresponds to the number of private $ days of the week; // how many days does the current month 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 ('day', 'yi', '2', '3', '4', '5', '6 '); echo '<tr>'; f Or ($ I = 0; $ I <count ($ week); $ I ++) echo '<th class = "fontb"> '. $ week [$ I]. '</th>'; echo '</tr>';} private function daysList () {echo '<tr> '; // output space (empty before the first day of the current month, January) 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> ';} // The following spaces 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> ';}}
Effect: