|
|
|
| $dayofweek = date('w', mktime(0, 0, 0, date('m'), $day_count, date('Y')));
для чего ну на эта строка? никак не разберусь нельзя просто сделать date('w') ? | |
|
|
|
|
|
|
|
для: buro
(03.11.2007 в 16:06)
| | Так вы получите текущий день недели, а не тот что у вас базе (судя по всему) записан. | |
|
|
|
|
|
|
|
для: sim5
(03.11.2007 в 16:35)
| | ок. спасибо. понял в чём суть... :)
Народ, я тут подредактировал для своих нужд скрипт этого календаря. вот что вышло. Нормально так с точки зрения профессионалов?
может кому пригодится.
есть переход по месяцам и по годам
<?php
//год
$year=intval($_GET["year"]);
if(empty($year) or $year>2037)
{$year=date('Y');}
//месяц
$month=intval($_GET["month"]);
if (empty($month) or $month>12 or $month<1)
{$month=date('m');}
// Вычисляем число дней в текущем месяце
$dayofmonth = date('t', mktime(0, 0, 0, $month, "1", $year));
// Счётчик для дней месяца
$day_count = 1;
// 1. Первая неделя
$num = 0;
for($i = 0; $i < 7; $i++)
{
// Вычисляем номер дня недели для числа
$dayofweek = date('w', mktime(0, 0, 0, $month, $day_count, $year));
// Приводим к числа к формату 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;
}
if($month == "1" ){$month_ru="Январь";}
elseif($month == "2" ){$month_ru="Февраль";}
elseif($month == "3" ){$month_ru="Март";}
elseif($month == "4" ){$month_ru="Апрель";}
elseif($month == "5" ){$month_ru="Май";}
elseif($month == "6" ){$month_ru="Июнь";}
elseif($month == "7" ){$month_ru="Июль";}
elseif($month == "8" ){$month_ru="Август";}
elseif($month == "9" ){$month_ru="Сентябрь";}
elseif($month == "10"){$month_ru="Октябрь";}
elseif($month == "11"){$month_ru="Ноябрь";}
elseif($month == "12"){$month_ru="Декабрь";}
// 3. Выводим содержимое массива $week
// в виде календаря
// Выводим таблицу
if ($month=="1")
{
$pyear=intval($year-1);
$pmonth="12";
$nyear=intval($year);
$nmonth=intval($month+1);
}
else if ($month>"1" or $month<"12" )
{
$pyear=intval($year);
$pmonth=intval($month-1);
$nyear=intval($year);
$nmonth=intval($month+1);
}
if ($month=="12" )
{
$pyear=intval($year);
$pmonth=intval($month-1);
$nyear=intval($year+1);
$nmonth="1";
}
echo"<table><tr align=center><td><b><a style='text-decoration:none;' href='".$_SERVER['PHP_SELF']."?year=".$pyear."&month=".$pmonth."'><<</a><b> ".$month_ru." <b><a style='text-decoration:none;' href='".$_SERVER['PHP_SELF']."?year=".$nyear."&month=".$nmonth."'>>></a><b></td></tr><tr><td>";
echo "<table border=1><tr align=center><td>Пн<td>Вт<td>Ср<td>Чт<td>Пт<td>Сб<td>Вс</tr>";
for($i = 0; $i < count($week); $i++)
{
echo "<tr align=center>";
for($j = 0; $j < 7; $j++)
{
if(!empty($week[$i][$j]))
{ if ($week[$i][$j]==date(d) && $month==date(m) && $year==date(Y))
{$week[$i][$j]="<b>".$week[$i][$j]."</b>";}
// Если имеем дело с субботой и воскресенья
// подсвечиваем их
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> </td>";
}
echo "</tr>";
}
echo "</table>";
echo "</td></tr><tr align=center><td><b><a style='text-decoration:none;' href='".$_SERVER['PHP_SELF']."?year=".intval($year-1)."'><<</a></b> ".$year." <b><a style='text-decoration:none;' href='".$_SERVER['PHP_SELF']."?year=".intval($year+1)."'>>></a><b></td></tr></table>";
?>
|
| |
|
|
|
|
|
|
|
для: buro
(04.11.2007 в 05:55)
| |
<?
$month_ru = array(1 => "Январь","Февраль","Март",....);
$month = $month_ru[$month];
|
| |
|
|
|
|
|
|
|
для: sim5
(04.11.2007 в 06:17)
| |
<?php
//год
$year=intval($_GET["year"]);
if(empty($year) or $year>2037)
{$year=date('Y');}
//месяц
$month=intval($_GET["month"]);
if (empty($month) or $month>12 or $month<1)
{$month=date('m');}
// Вычисляем число дней в текущем месяце
$dayofmonth = date('t', mktime(0, 0, 0, $month, "1", $year));
// Счётчик для дней месяца
$day_count = 1;
// 1. Первая неделя
$num = 0;
for($i = 0; $i < 7; $i++)
{
// Вычисляем номер дня недели для числа
$dayofweek = date('w', mktime(0, 0, 0, $month, $day_count, $year));
// Приводим к числа к формату 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;
}
//забиваем названия каждого месяца в массив
$month_ru = array(1 => "Январь",2 => "Февраль",3 => "Март",4 => "Апрель",5 => "Май", 6 => "Июнь",7 => "Июль",8 => "Август",9 => "Сентябрь",10 => "Октябрь",11 => "Ноябрь",12 => "Декабрь");
// 3. Выводим содержимое массива $week
// в виде календаря
// Выводим таблицу
if ($month=="1")
{
$pyear=intval($year-1);
$pmonth="12";
$nyear=intval($year);
$nmonth=intval($month+1);
}
else if ($month>"1" or $month<"12" )
{
$pyear=intval($year);
$pmonth=intval($month-1);
$nyear=intval($year);
$nmonth=intval($month+1);
}
if ($month=="12" )
{
$pyear=intval($year);
$pmonth=intval($month-1);
$nyear=intval($year+1);
$nmonth="1";
}
echo"<table><tr align=center><td><b><a style='text-decoration:none;' href='".$_SERVER['PHP_SELF']."?year=".$pyear."&month=".$pmonth."'><<</a><b> ".$month_ru[$month]." <b><a style='text-decoration:none;' href='".$_SERVER['PHP_SELF']."?year=".$nyear."&month=".$nmonth."'>>></a><b></td></tr><tr><td>";
echo "<table border=1><tr align=center><td>Пн<td>Вт<td>Ср<td>Чт<td>Пт<td>Сб<td>Вс</tr>";
for($i = 0; $i < count($week); $i++)
{
echo "<tr align=center>";
for($j = 0; $j < 7; $j++)
{
if(!empty($week[$i][$j]))
{ if ($week[$i][$j]==date(d) && $month==date(m) && $year==date(Y))
{$week[$i][$j]="<b>".$week[$i][$j]."</b>";}
// Если имеем дело с субботой и воскресенья
// подсвечиваем их
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> </td>";
}
echo "</tr>";
}
echo "</table>";
echo "</td></tr><tr align=center><td><b><a style='text-decoration:none;' href='".$_SERVER['PHP_SELF']."?year=".intval($year-1)."'><<</a></b> ".$year." <b><a style='text-decoration:none;' href='".$_SERVER['PHP_SELF']."?year=".intval($year+1)."'>>></a><b></td></tr></table>";
?>
|
конечный вариант | |
|
|
|