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

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

  < ?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>";
?>

Для того чтобы вывести календарь в российком формате, необходимо изменить только блок вывода 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>";
?>

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



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

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

URI

Html (ЖЖ)

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

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

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