Forum Webscript.Ru
Программирование => Perl => Тема начата: banda от 25 Ноября 2002, 18:49:10
-
Народ help!!!
Как сделать календарь с сылками типа http://anekdotov.net
причем, есть директория, например, NEWS, скрипт,
читает все файлы (вида 22-Nov-2002.shtml) в этой директории.
Генерирует календарь, где число 22 - ссылка
-
http://search.cpan.org/search?query=Calendar&mode=module
Я пробовал HTML::CalendarMonth.
-
if ($day eq \'\')
{
($sec,$min,$hour,$mday,$mon,$year,$wday,$isdst)=localtime(time);
$year=$year+1900;
$mon++;
}
else
{
($den,$mon,$year)=split(/\\./,$day);
}
@mond = (\'Январь\',\'Февраль\',\'Март\',\'Апрель\',\'Март\',\'Июнь\',\'Июль\',\'Август\',\'Сентябрь\',\'Окрябрь\',\'Ноябрь\',\'Декабрь\');
my $date = "$year-$mon-01";
sub dayofweek {
my @years = (0, 2, 3, 4);
my @month = (undef, 0, 3, 3, 6, 1, 4, 6, 2, 5, 0, 3, 5);
my @days = (7,1,2,3,4,5,6);
my $date = shift;
my ($yy, $mm, $dd) = split(/\\-/, $date);
$dd =~ s/^0//;
$mm =~ s/^0//;
my($tmp, $a, $b, $c, $e);
$tmp = $yy - 1996;
$a = $tmp & 3;
$b = ($tmp >> 2) + ($tmp & hex("FC"));
$c = $month[$mm];
if($a == 0 && $mm > 2){$c++;}
$a = $years[$a];
$e = ($a+$b+$c+$dd) % 7;
return $days[$e];
}
$d = dayofweek($date);
if ($mon == 1 || $mon == 3 || $mon == 5 || $mon == 7 || $mon == 8 || $mon == 10 || $mon == 12)
{
$end=31;
}
elsif ($mon == 2)
{
if ($year%4 == 0)
{
$end=29;
}
else
{
$end=28;
}
}
else
{
$end=30;
}
$m=$mon-1;
print "$mond[$m]\\, $year года";
print "Пн. | Вт. | Ср. | Чт. | Пт. | Сб. | Вс. |
";
$a=0;
$head="";
$foot="";
$f=-1;
for ($i=1;$i<48;$i++)
{
$b=$a+1;
####################################################################################
#####Создание ссылок в календаре
####################################################################################
$head="";
$foot="";
###################################################################################
#Отмечаем воскресенье
if ($i%7 == 0)
{
$bg="$vs";
}
else
{
$bg="$mbg";
}
#Это первые "пустые дни"
if ($i < $d)
{
print " | ";
}
#Вывод дней
if ($i >= $d)
{
$a++;
if ($a <= $end)
{
print "$head $a $foot | ";
}
}
#Проверка на последнее число
if ($a > $end)
{
if ($i%7 == 0)
{
print " |
";
last;
}
else
{
print " | ";
}
}
if ($i%7 == 0)
{
print "";
}
}
Переменным присваивайте такие вещи как
$head="a< href=...>";
$foot="";
-
Заумно, но без модулей.
Сделано на ходу, потому могут быть ошибки...
-
Будут вопросы, предложения или критика - моя аська в профайле
-
Заумно, но без модулей.
Много раз уже писал - изобретение велосипеда не преследуется по закону.
А вот патент на изобретение колеса был выдан в Австралии не так давно.:)
Если модуль не имеет бинарной части, то даже проблем с его установкой на хостинге не будет - поставил в свою директорию и пользуйся сколько влезет.:)
-
Выдает ошибку 500
Premature end of script headers: calendar.cgi
-
Выдает ошибку 500
Premature end of script headers: calendar.cgi
Потому как была просто описана процедура создания ссылок. Нельзя же так тупо передирать...
-
Я в этом чайник, помогите, что дальше!
-
У меня аська есть в профайле...
И я не кусаюсь...
(хотя...)