Генерируем календарь PHP скрипт

Возврат к списку

m2.jpg

Итак, сегодня маленький урок по PHP . Давным-давно, когда я писал свою   первую CMS, столкнулся с проблемой. Как сгенерировать календарь на   php? Ведь есть високосный год, как правильно расставить дни, в соответствие   с днем недели? Ломал голову около 2 дней, и в итоге, все же нашел    решение. Для генерации календаря использовал 3 функции: mktime() , date() и str_replace().

Скрипт:
 <?php 

  /*Проверяем какой год, если високосный то в феврале 29 дней иначе 28*/ 

  if (date(L) == 1) 
   { 

   $m['01'] = 31; 
   $m['02'] = 29; 
   $m['03'] = 31; 
   $m['04'] = 30; 
   $m['05'] = 31; 
   $m['06'] = 30; 
   $m['07'] = 31; 
   $m['08'] = 31; 
   $m['09'] = 30; 
   $m['10'] = 31; 
   $m['11'] = 30; 
   $m['12'] = 31; 

  } 

  else 

   { 

   $m['01'] = 31; 
   $m['02'] = 28; 
   $m['03'] = 31; 
   $m['04'] = 30; 
   $m['05'] = 31; 
   $m['06'] = 30; 
   $m['07'] = 31; 
   $m['08'] = 31; 
   $m['09'] = 30; 
   $m['10'] = 31; 
   $m['11'] = 30; 
   $m['12'] = 31; 
  } 

 $FORM=""; 

 for ($i=1;$i<=$m[date(m)];$i++) 

   { 

    $dn = date("D",mktime (0,0,0,date(n),$i,date(Y))); // День недели 

    $$dn = date("j",mktime (0,0,0,date(n),$i,date(Y))); // Дата 

    if (date("D",mktime (0,0,0,date(n),$i,date(Y))) == "Sun" || $i == $m[date(m)]) 

    { 

    $FOR_CH="<tr><td>#Mon#</td><td>#Tue#</td><td>#Wed#</td><td>#Thu#</td><td>#Fri#</td><td>#Sat#</td><td>#Sun#</td></tr>\r\n"; 

    $FORM.=str_replace(array("#Mon#","#Tue#","#Wed#","#Thu#","#Fri#","#Sat#","#Sun#"),array($Mon,$Tue,$Wed,$Thu,$Fri,$Sat,$Sun),$FOR_CH); 

     $Mon = "&nbsp;"; 
     $Tue = "&nbsp;"; 
     $Wed = "&nbsp;"; 
     $Thu = "&nbsp;"; 
     $Fri = "&nbsp;"; 
     $Sat = "&nbsp;"; 
     $Sun = "&nbsp;"; 

    } 

   } 

   echo "<table>\r\n 
   <tr><td><b>Пн</b></td><td><b>Вт</b></td><td><b>Ср</b></td><td><b>Чт</b></td><td><b>Пт</b></td><td><b>Сб</b></td><td><b>Вс</b></td></tr>\r\n 
   $FORM 
   </table>\r\n"; 

?> 
Скрипт достаточно простой и Вам не нужен  частный детектив услуги , что бы в нем разобраться. Во всем поможет php.ru

P.S. Изменил скрипт, ввиду замечания Кодера. В php у функции date() есть параметр L, который определяет високосный год на дворе или нет. Поэтому условие:
if (date(y)/4 == ceil(date(y)/4)) 
Не верно, а верно следующие условие:
if (date(L) == 1)




Возврат к списку