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

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

HTML
Текст

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

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

  16.    if($dayofweek == $i)
  17.    {
  18.      // Если дни недели совпадают,
  19.      // заполняем массив $week
  20.      // числами месяца
  21.      $week[$num][$i] = $day_count;
  22.      $day_count++;
  23.    }
  24.    else
  25.    {
  26.      $week[$num][$i] = "";
  27.    }
  28.  }

  29.  // 2. Последующие недели месяца
  30.  while(true)
  31.  {
  32.    $num++;
  33.    for($i = 0; $i <  7; $i++)
  34.    {
  35.      $week[$num][$i] = $day_count;
  36.      $day_count++;
  37.      // Если достигли конца месяца - выходим
  38.      // из цикла
  39.      if($day_count > $dayofmonth) break;
  40.    }
  41.    // Если достигли конца месяца - выходим
  42.    // из цикла
  43.    if($day_count > $dayofmonth) break;
  44.  }

  45.  // 3. Выводим содержимое массива $week
  46.  // в виде календаря
  47.  // Выводим таблицу
  48.  echo "< table border=1>";
  49.  for($i = 0; $i < count($week); $i++)
  50.  {
  51.    echo "< tr>";
  52.    for($j = 0; $j < 7; $j++)
  53.    {
  54.      if(!empty($week[$i][$j]))
  55.      {
  56.        // Если имеем дело с субботой и воскресенья
  57.        // подсвечиваем их
  58.        if($j == 5 || $j == 6)
  59.             echo "< td>< font color=red>".$week[$i][$j]."< /font>< /td>";
  60.        else echo "< td>".$week[$i][$j]."< /td>";
  61.      }
  62.      else echo "< td>&nbsp;< /td>";
  63.    }
  64.    echo "< /tr>";
  65.  }
  66.  echo "< /table>";
  67. ?>

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

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

HTML
Текст

  1. < ?php
  2.  ...
  3.  // Выводим содержимое массива $week
  4.  // в виде календаря
  5.  // Выводим таблицу
  6.  echo "< table border=1>";
  7.  for($j = 0; $j < 7; $j++)
  8.  {
  9.    echo "< tr>";
  10.    for($i = 0; $i < count($week); $i++)
  11.    {
  12.      if(!empty($week[$i][$j]))
  13.      {
  14.        // Если имеем дело с субботой и воскресенья
  15.        // подсвечиваем их
  16.        if($j == 5 || $j == 6)
  17.             echo "< td>< font color=red>".$week[$i][$j]."< /font>< /td>";
  18.        else echo "< td>".$week[$i][$j]."< /td>";
  19.      }
  20.      else echo "< td>&nbsp;< /td>";
  21.    }
  22.    echo "< /tr>";
  23.  }
  24.  echo "< /table>";
  25. ?>

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



Постоянные ссылки

При копировании ссылка на TeaM RSN обязательна!

URI

Html (ЖЖ)

BB-код (Для форумов)

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

Вы должны войти, чтобы оставить комментарий.