календарь с понедельника
# 1
05.06.2006, 20:48
Взял из модуля календарик, чтобы на весь год отображался.
Все сделал под свои нужды, но никак не соображу как сделать, чтобы день недели начинался с понедельника, а не с воскресенья. (даже кусок в коде найти не могу, хоть он и маленький).
И уж совсем было бы здорово, если воскресенье красным отметить.
Вот код:
PHP код:
function calendar () {
if (! $Date ) {
$Date = Date ( "m/d/Y" );
}
$Date_Array = explode ( "/" , $Date );
$Date = mktime ( "" , "" , "" , $Date_Array [ 0 ], $Date_Array [ 1 ], $Date_Array [ 2 ]);
for ( $i = 1 ; $i < 13 ; $i ++) {
/**** Get the Day (Integer) for the first day in the month */
$First_Day_of_Month_Date = mktime ( "" , "" , "" , $i , 1 , $Date_Array [ 2 ]);
$Date = $First_Day_of_Month_Date ;
$Date_Array [ 0 ] = $i ;
$Day_of_First_Week = Date ( "w" , $First_Day_of_Month_Date );
/**** Find the last day of the month */
$Month = Date ( "m" , $Date );
$day = 27 ;
do {
$End_of_Month_Date = mktime ( "" , "" , "" , $Date_Array [ 0 ], $day , $Date_Array [ 2 ]);
$Test_Month = Date ( "m" , $End_of_Month_Date );
$day += 1 ;
} while ( $Month == $Test_Month );
$Last_Day = $day - 2 ;
/**** Get todays date */
$Today_d = Date ( "d" );
$Today_m = Date ( "m" );
$Today_y = Date ( "Y" );
print( "<TABLE class=\"avantgo\" border=0 cellspacing=1 cellpadding=0>" );
print( "<TR bgcolor=#829E1E><TH colspan=7><font class=mini color=#ffffff>" );
$month = Date ( "m" , $Date );
if ( $month == "01" ) {
$monthname = "Январь" ;
} elseif ( $month == "02" ) {
$monthname = "Февраль" ;
} elseif ( $month == "03" ) {
$monthname = "Март" ;
} elseif ( $month == "04" ) {
$monthname = "Апрель" ;
} elseif ( $month == "05" ) {
$monthname = "Май" ;
} elseif ( $month == "06" ) {
$monthname = "Июнь" ;
} elseif ( $month == "07" ) {
$monthname = "Июль" ;
} elseif ( $month == "08" ) {
$monthname = "Август" ;
} elseif ( $month == "09" ) {
$monthname = "Сентябрь" ;
} elseif ( $month == "10" ) {
$monthname = "Октябрь" ;
} elseif ( $month == "11" ) {
$monthname = "Ноябрь" ;
} elseif ( $month == "12" ) {
$monthname = "Декабрь" ;
}
print( $monthname );
print( "</FONT></TH></TR>" );
/**** Previous Greyed month days */
print( "\n<TR>" );
if ( $Day_of_First_Week != 0 )
print( "<TD colspan= $Day_of_First_Week ></TD>" );
$day_of_week = $Day_of_First_Week + 1 ;
/**** Build Current Month */
for ( $day = 1 ; $day <= $Last_Day ; $day ++) {
if ( $day_of_week == 1 ) {
print( "\n<TR>" );
}
if (( $day == $Today_d ) && ( $Date_Array [ 0 ] == $Today_m ) && ( $Date_Array [ 2 ] == $Today_y ))
print( "<TD class=\"outline\" width=8 align=center><FONT class=footmsg><a class=\"topiclink\" href=\"modules.php?name=Today&op=Eph&did= $day &mid= $i \"><b> $day </b></a></TD>" );
else
print( "<TD class=\"avantgo\" width=8 align=center><FONT class=footmsg><a class=\"topiclink\" href=\"modules.php?name=Today&op=Eph&did= $day &mid= $i \"> $day </a></TD>" );
if ( $day_of_week == 7 ) {
$day_of_week = 0 ;
print( "\n</TR>" );
}
$day_of_week += 1 ;
}
/**** Next Greyed month days */
$day = 1 ;
if ( $day_of_week != 1 ) {
$tmp = 8 - $day_of_week ;
print( "<TD colspan= $tmp ><font face=arial size=1 color=ffffff>.</TD>" );
}
}
print( "</TR></TABLE></CENTER>" );
}
18.06.2006, 20:37
ага. и у меня тоже интересует данный вопрос....
18.06.2006, 21:14
Вот тебе код, все как нужно сделано, как просил. Только еще раз прийдется адаптировать под свои нужды, т.к. это по модуль календарь.
Код:
<?php
if (eregi("block-Kalendar.php", $_SERVER['PHP_SELF'])) {
Header("Location: index.php");
die();
}
global $prefix, $currentlang, $calsetmonth, $calsetyear;
$module_name = "Kalendar";
/*
set $requestcomp to indicate the page on which you want the
javascript menu to appear
*/
$Date = Date("m/d/Y");
/* today's date */
$Date_Array1 = explode("/", $Date);
/* code for requested month or day */
$Date_Array = explode("/", $Date);
if (isset($calsetyear)) {
$Date_Array[2] = $calsetyear;
}
if (isset($calsetmonth)) {
$Date_Array[0] = $calsetmonth;
}
/**** Specific front display variables */
/*EDIT THESE TO SPECIFY COLORS BELOW*/
// Colores para personalizar se pueden usar los colores del tema $bgcolorX y $textcolorX
$hoy = "#FFFF00"; // Цвет текста текущей даты
$pas = "#000000"; // Цвет текста прошедших дней
$nue = "#FFFFFF"; // Цвет текста будущих дней дней
$ant = "#F5F5FF"; // Цвет фона обычных прошедших дней
$bgh = "#000000"; // Цвет фона текущего дня
$fes = "#FF0000"; // Цвет фона воскресных дней
$nor = "#666D75"; // Цвет фона обычных будущих дней
$content = "";
$selmon = array();
for ($i=1; $i <=12; $i++) {
$selmon[$i] = "";
}
$month = $Date_Array[0];
if ($month == "01" || $month =="1")
{
$monthname = _CALJAN;
$selmon[1] = "selected";
} elseif ($month == "02")
{
$monthname = _CALFEB;
$selmon[2] = "selected";
} elseif ($month == "03")
{
$monthname = _CALMAR;
$selmon[3] = "selected";
} elseif ($month == "04")
{
$monthname = _CALAPR;
$selmon[4] = "selected";
} elseif ($month == "05")
{
$monthname = _CALMAY;
$selmon[5] = "selected";
} elseif ($month == "06")
{
$monthname = _CALJUN;
$selmon[6] = "selected";
} elseif ($month == "07")
{
$monthname = _CALJUL;
$selmon[7] = "selected";
} elseif ($month == "08")
{
$monthname = _CALAUG;
$selmon[8] = "selected";
} elseif ($month == "09")
{
$monthname = _CALSEP;
$selmon[9] = "selected";
} elseif ($month == "10")
{
$monthname = _CALOCT;
$selmon[10] = "selected";
} elseif ($month == "11")
{
$monthname = _CALNOV;
$selmon[11] = "selected";
} elseif ($month == "12")
{
$monthname = _CALDEC;
$selmon[12] = "selected";
}
/* Determine selected year */
$selyear = array();
for ($i=1; $i <=10; $i++) {
$selyear[$i] = "";
if ($Date_Array[2] == ($i+2005)) {
$selyear[$i] = "selected";
}
}
/**** Get the Day (Integer) for the first day in the month */
$First_Day_of_Month_Date = mktime("", "", "", $Date_Array[0], 1, $Date_Array[2]);
$Date = $First_Day_of_Month_Date;
$Day_of_First_Week = Date("w",$First_Day_of_Month_Date);
/**** Find the last day of the month */
$Month = Date("m",$Date);
$day = 27;
do {
$End_of_Month_Date = mktime("", "", "", $Date_Array[0], $day, $Date_Array[2]);
$Test_Month = Date("m",$End_of_Month_Date);
$day += 1;
} while ( $Month == $Test_Month );
$Last_Day = $day - 1;
/**** Get todays date */
$Today_d = Date("d");
$Today_m = Date("m");
$Today_y = Date("Y");
/**** Build Month */
$content .= "\n<BR><center><TABLE border=0 cellspacing=1 cellpadding=2>";
$content .= "\n<TR>\n<TH colspan=7><FORM Name = \"selectcalendar\" action = \"index.php\">\n<center><FONT class=\"tiny\">";
//if (eregi($requestcomp,$_SERVER['REQUEST_URI'])) {
$content .="<B><SELECT Name = \"calsetmonth\" onChange=\"javascript :document.selectcalendar.submit()\">
<OPTION $selmon[1] VALUE='01'>Январь</OPTION>
<OPTION $selmon[2] VALUE='02'>Февраль</OPTION>
<OPTION $selmon[3] VALUE='03'>Март</OPTION>
<OPTION $selmon[4] VALUE='04'>Апрель</OPTION>
<OPTION $selmon[5] VALUE='05'>Май</OPTION>
<OPTION $selmon[6] VALUE='06'>Июнь</OPTION>
<OPTION $selmon[7] VALUE='07'>Июль</OPTION>
<OPTION $selmon[8] VALUE='08'>Август</OPTION>
<OPTION $selmon[9] VALUE='09'>Сентебрь</OPTION>
<OPTION $selmon[10] VALUE='10'>Октябрь</OPTION>
<OPTION $selmon[11] VALUE='11'>Ноябрь</OPTION>
<OPTION $selmon[12] VALUE='12'>Декабрь</OPTION>
</SELECT>
</b></font></center>\n</form>\n</th>\n</tr>\n";
//}
// $content .= "</TH>\n</TR>";
/**** Build Month */
$content .= "\n<TABLE border=\"0\" cellpadding=\"0\" cellspacing=\"1\">";
$day_of_week = 2;
$content .= "<TR bgcolor=\"$bgcolor2\">
<TD width=\"20\" align=\"center\"><FONT color=\"$textcolor1\" SIZE=\"1\"><b>Пн</b></font></TD>
<TD width=\"20\" align=\"center\"><FONT color=\"$textcolor1\" SIZE=\"1\"><b>Вт</b></font></TD>
<TD width=\"20\" align=\"center\"><FONT color=\"$textcolor1\" SIZE=\"1\"><b>Ср</b></font></TD>
<TD width=\"20\" align=\"center\"><FONT color=\"$textcolor1\" SIZE=\"1\"><b>Чт</b></font></TD>
<TD width=\"20\" align=\"center\"><FONT color=\"$textcolor1\" SIZE=\"1\"><b>Пт</b></font></TD>
<TD width=\"20\" align=\"center\"><FONT color=\"$textcolor1\" SIZE=\"1\"><b>Сб</b></font></TD>
<TD width=\"20\" align=\"center\"><FONT color=\"$textcolor1\" SIZE=\"1\"><b>Вс</b></font></TD>
</TR>";
if ($Day_of_First_Week == 0) $Day_of_First_Week = 7;
/**** Previous Greyed month days */
While ($day_of_week < ($Day_of_First_Week + 1)) {
if ($day_of_week == 2) {
$content .= "\n<TR>";
}
if ($day_of_week == 8)
$content .= "<TD valign=top><TABLE width=100% cellpadding=0 cellspacing=0 bgcolor=$bgcolor4 border=0><TR><TD align=center><FONT SIZE=2><b> </b></TR></TABLE></td>";
else
$content .= "<TD valign=top><TABLE width=100% cellpadding=0 cellspacing=0 border=0><TR><TD align=center><FONT SIZE=2><b> </b></TR></TABLE></td>";
$day_of_week += 1;
}
$usedcount = 0;
$cellcount = 0;
/**** Build Current Month */
for ($day = 1 ; $day <= $Last_Day ; $day++) {
if ($day_of_week == 2) $content .= "\n<TR>";
if ($day_of_week == 8) {
$bgnew = $fes;
$bgold = $fes;
}
else {
$bgnew = $nor;
$bgold = $ant;
}
$result = mysql_query("SELECT eid,title,eventDate,endDate,startTime,endTime,barc olor FROM $prefix"._events." WHERE (eventDate <= '$Date_Array[2]-$Date_Array[0]-$day' AND endDate >= '$Date_Array[2]-$Date_Array[0]-$day');");
if (($day == $Today_d) && ($Date_Array[0] == $Today_m) && ($Date_Array[2] == $Today_y))
$content .= "\n\t<TD valign=top><TABLE width=100% cellpadding=0 cellspacing=0 bgcolor=$bgh border=0><TR><TD align=center><b><a href=\"modules.php?name=Kalendar&data=0$day.$Date_Array[0].$Date_Array[2]\"><FONT color=$hoy SIZE=2>$day</font></a></b>";
elseif (($day < $Today_d) && ($Date_Array[0] == $Today_m) && ($Date_Array[2] == $Today_y))
$content .= "\n\t<TD valign=top><TABLE width=100% cellpadding=0 cellspacing=0 bgcolor=$bgold border=0><TR><TD align=center><b><a href=\"modules.php?name=Kalendar&data=0$day.$Date_Array[0].$Date_Array[2]\"><FONT color=$pas SIZE=2>$day</font></a></b>";
elseif (($Date_Array[0] < $Today_m) && ($Date_Array[2] == $Today_y) || ($Date_Array[2] < $Today_y))
$content .= "\n\t<TD valign=top><TABLE width=100% cellpadding=0 cellspacing=0 bgcolor=$bgold border=0><TR><TD align=center><b><a href=\"modules.php?name=Kalendar&data=0$day.$Date_Array[0].$Date_Array[2]\"><FONT color=$pas SIZE=2>$day</font></a></b>";
else
$content .= "\n\t<TD valign=top><TABLE width=100% cellpadding=0 cellspacing=0 bgcolor=$bgnew border=0><TR><TD align=center><b><FONT color=$nue SIZE=2>$day</font></b>";
if (mysql_num_rows($result) == 0)
$content .= "<br></TR></TABLE>";
elseif (mysql_num_rows($result) >= 4)
$content .= "<br></TR></TABLE>";
elseif (mysql_num_rows($result) >= 3)
$content .= "<br></TR></TABLE>";
elseif (mysql_num_rows($result) >= 2)
$content .= "<br></TR></TABLE>";
else
$content .= "<br></TR></TABLE>";
$content .= "</td>";
if ($day_of_week == 8) {
$day_of_week = 1;
$content .= "\n</TR>";
}
$day_of_week += 1;
}
/**** Next Greyed month days */
$day = 1;
if ($day_of_week != 1)
{
$tmp = 8 - $day_of_week;
$content .= "<TD colspan=$tmp><font class=\"tiny\"></font></TD>";
}
$Date = implode("/", $Date_Array);
$content .= "\n</td></tr></table><BR>";
?>
ну примерно так.
разместили одновременно , бывает
Последний раз редактировалось Erixon, 18.06.2006 в 21:16 .
Причина: не полный код
18.06.2006, 21:13
$First_Day_of_Month_Date = mktime("", "", "", $i, 1, $Date_Array[2]);
заменить на
$First_Day_of_Month_Date = mktime("", "", "", $i, 7, $Date_Array[2]);
18.06.2006, 23:34
Цитата: Сообщение от Alexander-V-Sh
$First_Day_of_Month_Date = mktime("", "", "", $i, 1, $Date_Array[2]);
заменить на
$First_Day_of_Month_Date = mktime("", "", "", $i, 7, $Date_Array[2]);
Мда, а кто тебе сказал что я использую именно етот блок?... но все таки поискать аналогию у себя можно...
19.06.2006, 00:40
notrom
:))) если ты используешь не этот блок, то нафига в этом топике писать что тебя интересует такой же вопрос как и меня :) А меня как раз интересовал тот код, который я выложил :)
Опции темы
Поиск в этой теме
Опции просмотра
Комбинированный вид
Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
Похожие темы
Тема
Автор
Раздел
Ответов
Последнее сообщение
Календарь для Nuke
Graund
Установка Блоков
20
17.04.2006 03:24
Часовой пояс GMT +4, время: 21:53 .