Cool.. just tried your script. I might try to convert it to Smarty template 
compatible code, in my spare time. Have you used Smarty Templates??
  "Joe Harman" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED]
  Hello,

  I just finished writing a basic calendar script... I wanted to pass it out to 
everyone here... maybe someone could use it... or, even better optimize it.. 
.and maybe share that with me.

  <?php

  function Cal_Month()
   {
    // Get Today's Date
     $todays_date = getdate();
    
    // Determine what month to display
     if(isset($_GET['month']))
      {
       $resolve_time = "1 ".$_GET['month']." ".$_GET['year'];
       $resolve_first_day_of_month = strtotime($resolve_time);
       $resolved_date = getdate($resolve_first_day_of_month);
      }
      else
      { $resolved_date = $todays_date; }
    
    // if this is the current month - say it's okay to mark today on the 
calendar
     if($todays_date['year'] == $resolved_date['year'] && $todays_date['month'] 
== $resolved_date['month'])
      {  $mark_today_on_calendar = TRUE; }

    // HOW MANY DAYS ARE IN THIS MONTH
     $days_in_current_month = cal_days_in_month(CAL_GREGORIAN, 
$resolved_date['mon'], $resolved_date['year']);
    
    // STRING TO START THE CALENDAR ON THE FIRST DAY OF THE MONTH
     $show_month = $resolved_date['month'];
     $show_year = $resolved_date['year'];
    
    // Get Info for Current Displayed Month 
     $string_time = "1 ".$show_month." ".$show_year;
     $first_day_of_month = strtotime($string_time);
     $first_day = getdate($first_day_of_month); //**************************
     $the_first_day_of_the_month = getdate($first_day_of_month); // Starts from 
the 1st
     
     $num_days_week = 7;
     $num_days_in_month = cal_days_in_month(CAL_GREGORIAN, 
$resolved_date['mon'], $resolved_date['year']);
    
    // Get info for NEXT month 
     $show_next = strtotime("+1 Month", $first_day_of_month); 
     $show_next_month_first_day = getdate($show_next);
     
    // Get info for PREV month 
     $show_prev = strtotime("-1 Month", $first_day_of_month); 
     $show_prev_month_first_day = getdate($show_prev);
     
     $next_month = $show_next_month_first_day['month'];
     $next_year = $show_next_month_first_day['year'];
     $prev_month = $show_prev_month_first_day['month'];
     $prev_year = $show_prev_month_first_day['year']; 
     
     $link_next_month = "<a 
href=\"?month=".$next_month."&year=".$next_year."\">Next Month </a>";
     $link_prev_month = "<a 
href=\"?month=".$prev_month."&year=".$prev_year."\">Prev Month </a>";
    
    // Table Size Variables... will be moved to CSS eventually
     $table_align = "center";
     $table_width = 500;
     $table_height = 50;
     $cell_width = $table_width/7;   
    // Start HTML for Building Calendar
    
      $cal_generated .= "<center>".$link_prev_month." 
".$link_next_month."</center>";
      $cal_generated .= "<table width=\"".$table_width."\" border=\"1\" 
align=\"".$table_align."\">";
      $cal_generated .=  "<tr><td 
colspan=\"7\"><center>".$the_first_day_of_the_month['month']." 
".$the_first_day_of_the_month['year']."</center></td></tr>";
      $cal_generated .= "<tr><td width=\"".$cell_width."\">Sun</td><td 
width=\"".$cell_width."\">Mon</td>";
      $cal_generated .= "<td width=\"".$cell_width."\">Tue</td><td 
width=\"".$cell_width."\">Wed</td><td width=\"".$cell_width."\">Thu</td>";
      $cal_generated .= "<td width=\"".$cell_width."\">Fri</td><td 
width=\"".$cell_width."\">Sat</td></tr>";
      
    // Initial Calendar Buildin Variables
      $first_week_marked = FALSE;
      $month_day_count = 1;
      $week_day_count = 0;

    // Start The Calendar Loop
      do {
        if($mark_today_on_calendar == TRUE && $todays_date['mday'] == 
$month_day_count)
         { 
          $highlight_today_open = "<font color=\"#990000\">"; 
          $highlight_today_close = "</font>";
         }
        else
         { 
          $highlight_today_open = "<font color=\"#000000\">"; 
          $highlight_today_close = "</font>";
         }
      
       // If it is the first day of the week open a ROW
        if($week_day_count == 0)
          { 
           $cal_generated .= "<tr>"; 
          }
        
         if ($first_week_marked == FALSE)
          {
           $blank_cell = 0;
            do {
             if($the_first_day_of_the_month['wday'] <> $blank_cell)
              {
               $cal_generated .= "<td height=\"".$table_height."\" 
valign=\"top\"></td>";
               $blank_cell++;
              }
             else
              { 
               
               
               $cal_generated .= "<td height=\"".$table_height."\" 
valign=\"top\">".$highlight_today_open 
."".$month_day_count."".$highlight_today_close."</td>";
               $first_week_marked = TRUE;
              }
              
            $week_day_count = $the_first_day_of_the_month['wday'];
             
           } while ($first_week_marked == FALSE);
            
          }
         else
          {
           $cal_generated .= "<td height=\"".$table_height."\" 
valign=\"top\">".$highlight_today_open 
."".$month_day_count."".$highlight_today_close."</td>";
          }
        
        $month_day_count++;
        
        // If it is the last day of the week close ROW
         if($week_day_count == 6)
          { 
           $cal_generated .= "</tr>"; 
          }
          
        $week_day_count++;
       
        // Countings 
         if($week_day_count == 7)
          {$week_day_count=0;}
          
      } while ($month_day_count <= $num_days_in_month);
   // End Calendar Loop
      
   $cal_generated .= "</table>";   
   return $cal_generated;
     
   }

  echo Cal_Month();
  ?>

  Joe Harman

Reply via email to