Календарь на текущий месяц

Автор: content Воскресенье, Апрель 8th, 2012 Нет комментариев

Рубрика: Язык PHP

Скрипт предназначен для отображения календаря на текущий месяц

Календарь в американском формате

<?php
  // Вычисляем число дней в текущем месяце
  $dayofmonth = date('t');
  // Счётчик для дней месяца
  $day_count = 1; 

  // 1. Первая неделя
  $num = 0;
  for($i = 0; $i < 7; $i++)
  {
    // Вычисляем номер дня недели для числа
    $dayofweek = date('w',
                      mktime(0, 0, 0, date('m'), $day_count, date('Y')));
    // Приводим к числа к формату 1 - понедельник, ..., 6 - суббота
    $dayofweek = $dayofweek - 1;
    if($dayofweek == -1) $dayofweek = 6; 

    if($dayofweek == $i)
    {
      // Если дни недели совпадают,
      // заполняем массив $week
      // числами месяца
      $week[$num][$i] = $day_count;
      $day_count++; 
    }
    else
    {
      $week[$num][$i] = "";
    }
  } 

  // 2. Последующие недели месяца
  while(true)
  {
    $num++;
    for($i = 0; $i < 7; $i++)
    {
      $week[$num][$i] = $day_count;
      $day_count++;
      // Если достигли конца месяца - выходим
      // из цикла
      if($day_count > $dayofmonth) break;
    }
    // Если достигли конца месяца - выходим
    // из цикла
    if($day_count > $dayofmonth) break;
  } 

  // 3. Выводим содержимое массива $week
  // в виде календаря
  // Выводим таблицу
  echo "<table border=1>";
  for($i = 0; $i < count($week); $i++)
  {
    echo "<tr>";
    for($j = 0; $j < 7; $j++)
    {
      if(!empty($week[$i][$j]))
      {
        // Если имеем дело с субботой и воскресенья
        // подсвечиваем их
        if($j == 5 || $j == 6)
             echo "<td><font color=red>".$week[$i][$j]."</font></td>";
        else echo "<td>".$week[$i][$j]."</td>";
      }
      else echo "<td>&nbsp;</td>";
    }
    echo "</tr>";
  }
  echo "</table>";
?> 

Результат работы скрипт представлен ниже:

1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

Для того чтобы вывести календарь в российком формате, необходимо изменить только блок вывода 3

Календарь в российком формате

 <?php
  ...
  // Выводим содержимое массива $week
  // в виде календаря
  // Выводим таблицу
  echo "<table border=1>";
  for($j = 0; $j < 7; $j++)
  {
    echo "<tr>";
    for($i = 0; $i < count($week); $i++)
    {
      if(!empty($week[$i][$j]))
      {
        // Если имеем дело с субботой и воскресенья
        // подсвечиваем их
        if($j == 5 || $j == 6)
             echo "<td><font color=red>".$week[$i][$j]."</font></td>";
        else echo "<td>".$week[$i][$j]."</td>";
      }
      else echo "<td>&nbsp;</td>";
    }
    echo "</tr>";
  }
  echo "</table>";
?>  

Результат работы скрипт представлен ниже

3 10 17 24
4 11 18 25
5 12 19 26
6 13 20 27
7 14 21 28
1 8 15 22 29
2 9 16 23 30

Для того чтобы вывести календарь на произвольный месяц, достаточно передать в качестве второго параметра функции date() любую дату месяца в виде числа секунд, прошедших с полуночи 1 января 1970 года.

Автор: IT-студия SoftTime (softtime.ru)

Источник: http://www.php.su/articles/?cat=examples&page=051

Оставить комментарий

Чтобы оставлять комментарии Вы должны быть авторизованы.

Похожие посты