Re: Calendar Script

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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" <joe@xxxxxxxxxxxxxxx> wrote in message news:88.59.00168.4D7F2D14@xxxxxxxxxxxxxxx
  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

[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux