> Hi,
> Is there any PHP function or set of PHP files that allows me to print the
> current month in calendar format ?
> 

You should write one. Here's mine, which I'm sure could be improved:

HTH

--
Lowell Allen


function display_calendar($mon, $year) {
    // find current date and day of the month for comparison
    $today = getdate();
    $current_mon = $today['mon'];
    $current_mday = $today['mday'];
    $current_year = $today['year'];

    // if no arguments provided with function call
    if ((!isset($mon)) || ($mon == "")) {
        $mon = $today['mon'];
    }
    if ((!isset($year)) || ($year == "")) {
        $year = $today['year'];
    }
    
    // establish timestamp values from arguments provided
    $cal_date = getdate(mktime(0, 0, 0, $mon, 1, $year));
    $month = $cal_date['month'];
    $weekday = $cal_date['weekday'];

    // find position of first day of month, 0 thru 6 for Sun. thru Sat.
    $firstdayposition = $cal_date['wday'];
    
    // find day of year of first day of month
    $firstday_yearday = $cal_date['yday'];
    
    $lastday = getdate(mktime(0, 0, 0, $mon + 1, 0, $year));
    
    // find position of last day of month
    $lastdayposition = $lastday['wday'];
        
    // find day of year of last day of month
    $lastday_yearday = $lastday['yday'];
    
    // find number of days in current month
    $numdays = $lastday_yearday - $firstday_yearday + 1;
    
    // find last day date of previous month
    $prevmonlastday = getdate(mktime(0, 0, 0, $mon, 0));
    $prevmonlastdaydate = $prevmonlastday['mday'];
    
    // html layout for month
    
    if ($firstdayposition != 0) {
        $caldate = $prevmonlastdaydate - $firstdayposition + 1;
        $color = "#666";
    } else {
        $caldate = 1;
        $color = "#333";
    }
    ?>
    <h4><?=$month?> <?=$year?></h4>
    <table cellpadding="4" cellspacing= "0" style="border: solid 1px
#cccccc;">
    <tr>
    <td class="dayslabel" width="14%">S</td>
    <td class="dayslabel" width="14%">M</td>
    <td class="dayslabel" width="14%">T</td>
    <td class="dayslabel" width="14%">W</td>
    <td class="dayslabel" width="14%">T</td>
    <td class="dayslabel" width="14%">F</td>
    <td class="dayslabel" width="14%">S</td>
    </tr>
    <tr>
    <?
    $i = 1;
    
    while ($i <= ($numdays + $firstdayposition + 6 - $lastdayposition)) {
        if (($i % 7 == 0) && ($i != ($numdays + $firstdayposition + 6 -
$lastdayposition))) {
            if (($caldate == $current_mday) && ($mon == $current_mon) &&
($year == $current_year) && ($color == "#333")) {
                echo("<td class=\"calendar\" style=\"color:
#600;\"><strong>" . $caldate . "</strong></td>\n</tr>\n<tr>\n");
            } else {
                echo("<td class=\"calendar\" style=\"color: " . $color .
";\">" . $caldate . "</td>\n</tr>\n<tr>\n");
            }
        } else {
            if (($caldate == $current_mday) && ($mon == $current_mon) &&
($year == $current_year) && ($color == "#333")) {
                echo("<td class=\"calendar\" style=\"color:
#600;\"><strong>" . $caldate . "</strong></td>\n");
            } else {
                echo("<td class=\"calendar\" style=\"color: " . $color .
";\">" . $caldate . "</td>\n");
            }
        }
        $i = $i + 1;
        if ($i - 1 == $firstdayposition) {
            $caldate = 1;
            $color = "#333";
        } elseif (($i - 1) == ($numdays + $firstdayposition)) {
            $caldate = 1;
            $color = "#666";
        } else {
            $caldate = $caldate + 1;
        }
    }
    ?>
    </tr>
    </table>
    <?
}

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to