|
|
|
| Помогите подправить код календаря, так чтобы подсвечивались выходные.
<?php
define("ADAY", (60*60*24));
// $eDate содержит в себе 1 или 0.
// 0 - это значит надо выводить текущую дату
// 1 - это значит пользователь нажал на прокрутку месяца вперед или назад, значит надо выводить календарь за определенный месяц
global $eDate, $darr;
$months = Array("Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь");
if($eDate != "1")
{
// Это генерация настоящий даты
$nowArray = getdate();
$month = $nowArray[mon];
$year = $nowArray[year];
$start = mktime(0, 0, 0, $month, 1, $year);
$firstDayArray = getdate($start);
if($firstDayArray['mon']-1 == 0)
{
$prevmes = '1'.'.12.'.($firstDayArray['year']-1).'/';
}
else
{
$prevmes = '1'.'.'.( $firstDayArray['mon']-1).'.'.$firstDayArray['year'].'/';
}
if($firstDayArray['mon']+1 == 13)
{
$nextmes = '1'.'.1.'.($firstDayArray['year']+1).'/';
}
else
{
$nextmes = '1'.'.'.($firstDayArray['mon']+1).'.'.$firstDayArray['year'].'/';
}
$monthe = date(m) - 1;
$myear = date("Y год");
$den = $nowArray[mday];
}
else
{
// Это за $darr дату
// $darr['0'] - число
// $darr['1'] - месяц
// $darr['2'] - год
$mes = $darr['1']-1;
$month = $darr['1'];
$den = $darr['0'];
$year = $darr['2'];
$start = mktime(0, 0, 0, $darr['1'], 1, $year);
$firstDayArray = getdate($start);
if($firstDayArray['mon']-1 == 0)
{
$prevmes = '1'.'.12.'.($firstDayArray['year']-1).'/';
}
else
{
$prevmes = '1'.'.'.( $firstDayArray['mon']-1).'.'.$firstDayArray['year'].'/';
}
if($firstDayArray['mon']+1 == 13)
{
$nextmes = '1'.'.1.'.($firstDayArray['year']+1).'/';
}
else
{
$nextmes = '1'.'.'.($firstDayArray['mon']+1).'.'.$firstDayArray['year'].'/';
}
$myear = $months[$mes]." ".$year." год";
}
print "<table width='160' cellspacing='1' cellpadding='2' border='0'>
<td width='10%' align='right'><a href='/news/".$prevmes."'>««</a></td>
<td width='80%' colspan='5' align='center'>".$myear."</td>
<td width='10%' align='left'><a href='/news/".$nextmes."'>»»</a></td>
<tr class='cal'>
<td width='14%' align='center'>Пн</td><td width='14%' align='center'>Вт</td><td width='14%' align='center'>Ср</td><td width='14%' align='center'>Чт</td><td width='14%' align='center'>Пт</td><td width='14%' align='center'>Сб</td><td width='14%' align='center'>Вс</td>
</tr>
<tr>\n";
$i = 0;
for($count=1;$count < (6*7);$count++)
{
$dayArray = getdate($start);
if((($count) % 7) == 1)
{
if($i == 1)
{
if($dayArray[mon] != $month) break;
print "</tr><tr>\n";
}
$i = 1;
}
if($count < $firstDayArray[wday] || $dayArray[mon] != $month)
{
print "\t<td bgcolor='#E9EFF5'></td>\n";
}
elseif(($dayArray[mday] > date("j") and $month == date("n")) or ($dayArray[mon] > date("n") and ($year == date("Y"))) or ($year > date("Y")))
{
if($dayArray[weekday] == "Sunday" or $dayArray[weekday] == "Saturday") { $bgcolor='#ABCAE9'; } else { $bgcolor='#ABCAE9'; }
print "<td width='14%' bgcolor='".$bgcolor."' align='center' onmouseover=\"this.style.backgroundColor='#E9EFF5'\" onmouseout=\"this.style.backgroundColor=''\">".$dayArray['mday']."</td>\n";
$start += ADAY;
}
else
{
if($dayArray[weekday] == "Sunday" or $dayArray[weekday] == "Saturday") { $bgcolor='#ABCAE9'; } else { $bgcolor='#ABCAE9'; }
if($den == $dayArray[mday]) { $bgcolor='#E9EFF5'; }
print "<td bgcolor='".$bgcolor."' width='14%' align='center' onmouseover=\"this.style.backgroundColor='#E9EFF5'\" onmouseout=\"this.style.backgroundColor=''\"><a href='/news/".$dayArray[mday].".".$dayArray[mon].".".$dayArray[year]."/'>".$dayArray['mday']."</a></td>\n";
$start += ADAY;
}
}
print = "</table>";
?>
|
| |
|
|
|
|
|
|
|
для: JIEXA
(01.05.2005 в 13:02)
| | А вот это проверка
if($dayArray[weekday] == "Sunday" or $dayArray[weekday] == "Saturday") { $bgcolor='#ABCAE9'; } else { $bgcolor='#ABCAE9'; }
|
не срабатывает? | |
|
|
|
|
|
|
|
для: cheops
(01.05.2005 в 20:07)
| | неа, вот ты попробуй запусти его сейчас на компе у мебя он вообще выдаст не правильную дату :(. | |
|
|
|
|
|
|
|
для: JIEXA
(01.05.2005 в 20:30)
| | Это вот с чем связано, у буржуев на Западе неделя начинается не с Понедельника как у нас, а с Воскресенья! Поэтому всё правильно, если верхнюю строчку поменять на Вс Пн Вт Ср Чт Пт Сб - всё будет правильно, не привычно, но правильно.
А выходные не подсвечиваются, так как у них цвета с буднями совпадают if($dayArray[weekday] == "Sunday" or $dayArray[weekday] == "Saturday") { $bgcolor='#ABCAE9'; } else { $bgcolor='#ABCAE9'; } | |
|
|
|
|
|
|
|
для: cheops
(01.05.2005 в 20:48)
| | Забыл убрать, просто я сначала сделал все нормально, потом увидел баг и сделал одинаковые цвета, чтобы перед посетитеями не позорится, а сегодня увидел, что показывается 1 мая как понедельник, а сегодня эе воскресенье.
Если цвета седалть разными, то при нажатии следующий месяц будет раскрашиваться понедельник и воскресенье. Мне бы как тут http://omut.ru сделать... | |
|
|
|