Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Помогите с календарём
 
 автор: JIEXA   (01.05.2005 в 13:02)   письмо автору
 
 

Помогите подправить код календаря, так чтобы подсвечивались выходные.
<?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(000$month1$year);
        
$firstDayArray getdate($start);
        if(
$firstDayArray['mon']-== 0)
        {
                
$prevmes '1'.'.12.'.($firstDayArray['year']-1).'/';
        }
        else
        {
                
$prevmes '1'.'.'.( $firstDayArray['mon']-1).'.'.$firstDayArray['year'].'/';
        }
        if(
$firstDayArray['mon']+== 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(000$darr['1'], 1$year);
        
$firstDayArray getdate($start);
        if(
$firstDayArray['mon']-== 0)
        {
                
$prevmes '1'.'.12.'.($firstDayArray['year']-1).'/';
        }
        else
        {
                
$prevmes '1'.'.'.( $firstDayArray['mon']-1).'.'.$firstDayArray['year'].'/';
        }
        if(
$firstDayArray['mon']+== 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>";
?>

   
 
 автор: cheops   (01.05.2005 в 20:07)   письмо автору
 
   для: JIEXA   (01.05.2005 в 13:02)
 

А вот это проверка
if($dayArray[weekday] == "Sunday" or $dayArray[weekday] == "Saturday") { $bgcolor='#ABCAE9'; } else { $bgcolor='#ABCAE9'; }

не срабатывает?

   
 
 автор: JIEXA   (01.05.2005 в 20:30)   письмо автору
 
   для: cheops   (01.05.2005 в 20:07)
 

неа, вот ты попробуй запусти его сейчас на компе у мебя он вообще выдаст не правильную дату :(.

   
 
 автор: cheops   (01.05.2005 в 20:48)   письмо автору
 
   для: JIEXA   (01.05.2005 в 20:30)
 

Это вот с чем связано, у буржуев на Западе неделя начинается не с Понедельника как у нас, а с Воскресенья! Поэтому всё правильно, если верхнюю строчку поменять на Вс Пн Вт Ср Чт Пт Сб - всё будет правильно, не привычно, но правильно.

А выходные не подсвечиваются, так как у них цвета с буднями совпадают if($dayArray[weekday] == "Sunday" or $dayArray[weekday] == "Saturday") { $bgcolor='#ABCAE9'; } else { $bgcolor='#ABCAE9'; }

   
 
 автор: JIEXA   (01.05.2005 в 20:56)   письмо автору
 
   для: cheops   (01.05.2005 в 20:48)
 

Забыл убрать, просто я сначала сделал все нормально, потом увидел баг и сделал одинаковые цвета, чтобы перед посетитеями не позорится, а сегодня увидел, что показывается 1 мая как понедельник, а сегодня эе воскресенье.
Если цвета седалть разными, то при нажатии следующий месяц будет раскрашиваться понедельник и воскресенье. Мне бы как тут http://omut.ru сделать...

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования