当前位置:Linux教程 - Php - php自动生成月历代码

php自动生成月历代码

<?php
/*  
Function Written by Nelson Neoh @3/2004.  
For those who wants to utilize this code, please do not remove this remark.  
If you have done any enhancement to this code, please post the copy at http://www.dev-club.com PHP board.  Thank you.

Function usage: calendar(Month,Year)
*/
    
function calendar($MM,$YYYY){
    if(
$MM=="") $MM = date("m");
    if(
$YYYY=="") $YYYY = date("Y");
    if(
checkdate($MM,1,$YYYY)){
        
$stringDate = strftime("%d %b %Y",mktime (0,0,0,$MM,1,$YYYY));
        
$days = strftime("%d",mktime (0,0,0,$MM+1,0,$YYYY));
        
$firstDay = strftime("%w",mktime (0,0,0,$MM,1,$YYYY));
        
$lastDay = strftime("%w",mktime (0,0,0,$MM,$days,$YYYY));
        
$printDays = $days;
        
$preMonth = strftime("%m",mktime (0,0,0,$MM-1,1,$YYYY));
        
$preYear = strftime("%Y",mktime (0,0,0,$MM-1,1,$YYYY));
        
$nextMonth = strftime("%m",mktime (0,0,0,$MM+1,1,$YYYY));
        
$nextYear = strftime("%Y",mktime (0,0,0,$MM+1,1,$YYYY));
        print(
"<table border="1" cellpadding="1" cellspacing="1">");
        print(
"<tr><th valign="top"><a href="".$_SERVER['PHP_SELF']."?NB=".$_GET["NB"]."&MM=".$preMonth."&YY=".$preYear."">P</a></th>");
        print(
"<th colspan="5" valign="top">".strftime("%b %Y",mktime (0,0,0,$MM,1,$YYYY))."</th>");
        print(
"<th valign="top"><a href="".$_SERVER['PHP_SELF']."?NB=".$_GET["NB"]."&MM=".$nextMonth."&YY=".$nextYear."">N</a></th></tr>");
        print(
"<tr style="font-family: Verdana; font-size:x-small">");
        print(
"<th>Sun</th><th>Mon</th><th>Tue</th><th>Wed</th><th>Thu</th><th>Fri</th><th>Sat</th></tr>");
        
        
$currentDays = 1;
        for(
$a=1;$a<=5;$a++){
            print(
"<tr align="left" valign="top" style="font-family: Verdana; font-size:x-small">");
            
$diffDays = $firstDay-$lastDay;
            if(
$firstDay>$lastDay && $currentDays ==1 && ($diffDays<>1)){
                for(
$x=$lastDay;$x>=0;$x--){
                    
$printDays = $days-$x;
                    print(
"<td>$printDays</td>");
                }
                for(
$z=1;$z<$firstDay-$lastDay;$z++){
                    print(
"<td>&nbsp;</td>");
                }
                for(
$y=$firstDay;$y<7;$y++){
                    print(
"<td>$currentDays</td>");
                    
$currentDays++;
                }
            } elseif(
$firstDay!=0 && $currentDays==1){
                for(
$z=1;$z<=$firstDay;$z++){
                    print(
"<td>&nbsp;</td>");
                }
                for(
$y=$firstDay;$y<7;$y++){
                    print(
"<td>$currentDays</td>");
                    
$currentDays++;
                }
            } else {
                for(
$u=1;$u<=7 && $currentDays<=$days;$u++){
                    print(
"<td>$currentDays</td>");
                    
$currentDays++;
                }
            }
            print(
"</tr>");
        }
        print(
"</table>");
    }
}
?>