 |
 |
Форум сетевых администраторов » Программирование » PHP » календарь загнать в функцию
| Автор |
| Тема |
 |
|
 |
|
|
|
Участник+


Зарегистрирован: May 2002
Место проживания: Новокузнецк
Публикаций: 223
Статус:  |
Cделал календарь, работает так как мне и надо было, но вот осталось единственное что мне надо, это загнать весь код в одну функцию, что бы можно было вызывать её именно этой функцией.
вот код
PHP:
<?php
include("config.php");
$cell_width = "30";
$cell_height = "7";
$header_bg = "#E0E0E0";
$day_bg = "#000000";
$cell_border = "#ffffff";
$cell_bg = "#E6E6E6";
$today_bg = "#efefef";
$dayoff_bg = "red";
$fontsize = "1";
$fontcolor = "FFFFFF";
function get_offset_time()
{
$timeoffset = "+0";
$now = time();
$operator = substr ($timeoffset ,0,1);
$offset = (substr ($timeoffset ,1,2) * 3600);
if ($operator == "-")
$newtime = ($now - $offset);
elseif ($operator == "+")
$newtime = ($now + $offset);
return $newtime;
}
$newtime = get_offset_time();
$today = date("d",$newtime);
$tomonth = date("m",$newtime);
$toyear = date("Y",$newtime);
if ($month == 0) $month = date("m",$newtime);
if ($year == 0) $year=date("Y",$newtime);
if (strlen($month) ==1)
$month = "0" . "$month";
if (strlen($year) ==2)
$year = "20" . "$year";
$prev_month = date("m", mktime(0,0,0,$month -1, 1, $year));
$next_month = date("m", mktime(0,0,0,$month +1, 1, $year));
$prev_year = date("Y", mktime(0,0,0,$month -1, 1, $year));
$next_year = date("Y", mktime(0,0,0,$month +1, 1, $year));
$day= 2 - date("w",mktime (0,0,0,$month,1,$year));
if ($day==1)
$day=7;
$days_in_month = date("t", mktime(0,0,0,$month,1,$year));
$title = (date("F",mktime(0,0,0,$month,1,$year)));
$prev = "archive_month.php?year="."$prev_year&month=$prev_month";
$next = "archive_month.php?year="."$next_year&month=$next_month";
$prevlink = "<font size=$fontsize face=Terminal><a class=weekdays href=\"$prev\"><<<</a></font>";
$nextlink = "<font size=$fontsize face=Terminal><a class=weekdays href=\"$next\">>>></a></font>";
if ($title == "January") $title = "Январь";
if ($title == "February") $title = "Февраль";
if ($title == "March") $title = "Март";
if ($title == "April") $title = "Апрель";
if ($title == "May") $title = "Май";
if ($title == "June") $title = "Июнь";
if ($title == "July") $title = "Июль";
if ($title == "August") $title = "Август";
if ($title == "September") $title = "Сентябрь";
if ($title == "October") $title = "Октябрь";
if ($title == "November") $title = "Ноябрь";
if ($title == "December")$title = "Декбрь";
?>
<table border="0" cellpadding="0" cellspacing="0" width="150">
<tr>
<td align="center">
<table bgcolor="<?php echo "$header_bg"; ?>" align="center" border="0" cellpadding="1" cellspacing="0" width="150">
<tr>
<td align="center"><?php echo"<font color=3f3f3f size=1> $prevlink $title $year $nextlink </font>"?></td>
</tr>
</table>
</td></tr>
<tr><td bgcolor="<?php echo "$cell_border"; ?>">
<table border="0" cellpadding="1" cellspacing="1" width="150">
<tr>
<td bgcolor="<?php echo "$day_bg"; ?>" align="center" width="<?php echo "$cell_width"; ?>"><div class="weekdays"><font color=FFFFFF size=1><b>Пн</b></font></div></td>
<td bgcolor="<?php echo "$day_bg"; ?>" align="center" width="<?php echo "$cell_width"; ?>"><div class="weekdays"><font color=FFFFFF size=1><b>Вт</b></font></div></td>
<td bgcolor="<?php echo "$day_bg"; ?>" align="center" width="<?php echo "$cell_width"; ?>"><div class="weekdays"><font color=FFFFFF size=1><b>Ср</b></font></div></td>
<td bgcolor="<?php echo "$day_bg"; ?>" align="center" width="<?php echo "$cell_width"; ?>"><div class="weekdays"><font color=FFFFFF size=1><b>Чт</b></font></div></td>
<td bgcolor="<?php echo "$day_bg"; ?>" align="center" width="<?php echo "$cell_width"; ?>"><div class="weekdays"><font color=FFFFFF size=1><b>Пт</b></font></div></td>
<td bgcolor="<?php echo "$day_bg"; ?>" align="center" width="<?php echo "$cell_width"; ?>"><div class="weekdays"><font color=FFFFFF size=1><b>Сб</b></font></div></td>
<td bgcolor="<?php echo "$day_bg"; ?>" align="center" width="<?php echo "$cell_width"; ?>"><div class="weekdays"><font color=FFFFFF size=1><b>Вс</b></font></div></td>
</tr>
<?php
while($day <= $days_in_month) {
echo "<tr>\r\n";
for ($j=1; $j<=7; $j++){
if (($day == $today) && ($month == $tomonth) && ($year == $toyear)) {
?>
<td bgcolor="<?php echo "$today_bg"; ?>" height="<?php echo "$cell_height"; ?>" valign="top"><?php echo(($day <= $days_in_month && $day > 0 ) ? mini_cal_entries($year,$month,$day,$today,$tomonth ,$toyear): " "); ?></td>
<?php
}
else {
?>
<td bgcolor="<?php echo "$cell_bg"; ?>" height="<?php echo "$cell_height"; ?>" valign="top"><?php echo(($day <= $days_in_month && $day > 0 ) ? mini_cal_entries($year,$month,$day,$today,$tomonth ,$toyear): " "); ?></td>
<?php
}
$day++;
}
echo "</tr>\r\n";
}
?>
</table>
</td>
</tr>
</table>
<?php
function mini_cal_entries($year,$month,$day,$today,$tomonth ,$toyear)
{
global $db_name, $table, $url_home, $host, $user, $pass ;
if (($day == $today) && ($month == $tomonth) && ($year == $toyear))
$dayfmt = "<font color=ff0000><b>$day</b></font>";
else $dayfmt = "$day";
$zipday = $day;
$news_cat="sport";
$link=@mysql_connect($host,$user,$pass);
$db=@mysql_select_db($db_name,$link);
$result=@mysql_query("select * from $table WHERE status='open' AND news_cat='$news_cat' AND year='$year' AND month='$month' AND day='$zipday'");
while($row = mysql_fetch_array($result)) {
$links = "year=".$row["year"]."&month=".$row["month"]."&day=".$row["day"]."";
$dayfmt= "<font face=Arial Narrow color=ff0000><a href=$url_home"."$news_cat"."/archive_day.php?"."$links>$dayfmt</a></font>";
}
echo "<font face=Arial Narrow size=1 color=000000><div align=\"center\">$dayfmt</div></font>";
}
?>
__________________
**censored**
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
22-02-2003 15:16 |
|
|
Участник+
|
В третьей строке приведенного выше кода напиши:
[b]function... |
[сооб. #35261]
22-02-2003 23:22 |
|
Участник+

Зарегистрирован: Feb 2002
Место проживания: RU, VLadivostok
Публикаций: 145
Статус:  |
В третьей строке приведенного выше кода напиши:
function Calendar() {
В предпоследней:
}
А те функции, что уже здесь установлены (mini_cal_entries и get_offset_time) - вынеси выше или ниже функции calendar(). В самой calendar() их просто вызывай потом (они ведь уже будут объявлены).
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
22-02-2003 23:22 |
|
|
Участник+
|
| спасибо, получилось, только вот ещё, тут получается... |
[сооб. #35286]
23-02-2003 07:01 |
|
Участник+


Зарегистрирован: May 2002
Место проживания: Новокузнецк
Публикаций: 223
Статус:  |
спасибо, получилось, только вот ещё, тут получается что нужно высотвлять несколько аргументов
<?php Calendar(2003,02,23,23,02,2003);?>
из которых я понял два первых аргумента, это год потом идёт месяц, дальше незнаю зачем то день, и далее следующие аргументы $today,$tomonth,$toyear непонятно для чего они нужны, я просто вытсавил от понта дату любую, изменений незаметил.
Вообщем мне надо при выводе календаря, вместо этой функции <?php Calendar(2003,02,23,23,02,2003);?> такую <?php Calendar();?>
тоесть избавиться от аргументов, их бы гдени будь указать в самой функции, но вот как это сделать?
__________________
**censored**
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
23-02-2003 07:01 |
|
|
Участник+
|
ANDRY,
Там же, где у тебя задаются параметры... |
[сооб. #35306]
23-02-2003 11:30 |
|
|
Участник+
|
| всё с этим я разобрался, убрал я эту функцию... |
[сооб. #35311]
23-02-2003 12:43 |
|
Участник+


Зарегистрирован: May 2002
Место проживания: Новокузнецк
Публикаций: 223
Статус:  |
всё с этим я разобрался, убрал я эту функцию get_offset_time() без неё неплохо работает, немного поменял, всё работает, сам календарь выводиться теперь функцией mini_calendar(), но вот осталось ещё сделать обращение к базе для выбора категории тоесть так
WHERE news_cat='$news_cat_cal' переменная $news_cat_cal указывает через функцию mini_calendar($news_cat) где на самой странице где должен быть выведен календарик стоит такая функция mini_calendar("category") то почемуто он онеопределяет, тоесть переменной неприсваивается значение category, а если прописать так WHERE news_cat='category' то выводит. Вроде бы в global выставил переменную, что тогда ему надо-то ещё?
вот код
PHP:
<?php
include("config.php");
function mini_calendar($news_cat) {
global $month,$url_home,$news_cat_cal ;
$cell_width = "30";
$cell_height = "7";
$header_bg = "#E0E0E0";
$day_bg = "#000000";
$cell_border = "#ffffff";
$cell_bg = "#E6E6E6";
$today_bg = "#efefef";
$dayoff_bg = "red";
$fontsize = "1";
$fontcolor = "FFFFFF";
$today = date("d");
$tomonth = date("m");
$toyear = date("Y");
if ($month == 0) $month = date("m");
if ($year == 0) $year=date("Y");
if (strlen($month) ==1)
$month = "0" . "$month";
if (strlen($year) ==2)
$year = "20" . "$year";
$prev_month = date("m", mktime(0,0,0,$month -1, 1, $year));
$next_month = date("m", mktime(0,0,0,$month +1, 1, $year));
$prev_year = date("Y", mktime(0,0,0,$month -1, 1, $year));
$next_year = date("Y", mktime(0,0,0,$month +1, 1, $year));
$day= 2 - date("w",mktime (0,0,0,$month,1,$year));
if ($day==1)
$day=7;
$days_in_month = date("t", mktime(0,0,0,$month,1,$year));
$month_str = (date("F",mktime(0,0,0,$month,1,$year)));
$prev = "$url_home"."$news_cat_cal"."/archive_month.php?year="."$prev_year&month=$prev_month";
$next = "$url_home"."$news_cat_cal"."/archive_month.php?year="."$next_year&month=$next_month";
$prevlink = "<font size=$fontsize face=Terminal><a class=weekdays href=\"$prev\"><<<< </a></font>";
$nextlink = "<font size=$fontsize face=Terminal><a class=weekdays href=\"$next\"> >>>></a></font>";
if ($month_str == "January") $month_str = "Январь";
if ($month_str == "February") $month_str = "Февраль";
if ($month_str == "March") $month_str = "Март";
if ($month_str == "April") $month_str = "Апрель";
if ($month_str == "May") $month_str = "Май";
if ($month_str == "June") $month_str = "Июнь";
if ($month_str == "July") $month_str = "Июль";
if ($month_str == "August") $month_str = "Август";
if ($month_str == "September") $month_str = "Сентябрь";
if ($month_str == "October") $month_str = "Октябрь";
if ($month_str == "November") $month_str = "Ноябрь";
if ($month_str == "December")$month_str = "Декбрь";
echo "
<table border=0 cellpadding=0 cellspacing=0 width=150>
<tr>
<td align=center>
<table bgcolor=$header_bg align=center border=0 cellpadding=1 cellspacing=0 width=150>
<tr>
<td align=center><font color=3f3f3f size=1> $prevlink $month_str $year $nextlink </font></td>
</tr>
</table>
</td></tr>
<tr><td bgcolor=$cell_border>
<table border=0 cellpadding=1 cellspacing=1 width=150>
<tr>
<td bgcolor=$day_bg align=center width=$cell_width><div class=weekdays><font color=FFFFFF size=1><b>Пн</b></font></div></td>
<td bgcolor=$day_bg align=center width=$cell_width><div class=weekdays><font color=FFFFFF size=1><b>Вт</b></font></div></td>
<td bgcolor=$day_bg align=center width=$cell_width><div class=weekdays><font color=FFFFFF size=1><b>Ср</b></font></div></td>
<td bgcolor=$day_bg align=center width=$cell_width><div class=weekdays><font color=FFFFFF size=1><b>Чт</b></font></div></td>
<td bgcolor=$day_bg align=center width=$cell_width><div class=weekdays><font color=FFFFFF size=1><b>Пт</b></font></div></td>
<td bgcolor=FF9933 align=center width=$cell_width><div class=weekdays><font color=FFFFFF size=1><b>Сб</b></font></div></td>
<td bgcolor=FF9933 align=center width=$cell_width><div class=weekdays><font color=FFFFFF size=1><b>Вс</b></font></div></td>
</tr>";
?>
</tr>
<?php
while($day <= $days_in_month) {
echo "<tr>\r\n";
for ($j=1; $j<=7; $j++){
if (($day == $today) && ($month == $tomonth) && ($year == $toyear)) {
?>
<td bgcolor="<?php echo "$today_bg"; ?>" height="<?php echo "$cell_height"; ?>" valign="top"><?php echo(($day <= $days_in_month && $day > 0 ) ? mini_cal_entries($news_cat_cal,$year,$month,$day,$ today,$tomonth,$toyear): " "); ?></td>
<?php
}
else {
?>
<td bgcolor="<?php echo "$cell_bg"; ?>" height="<?php echo "$cell_height"; ?>" valign="top"><?php echo(($day <= $days_in_month && $day > 0 ) ? mini_cal_entries($news_cat_cal,$year,$month,$day,$ today,$tomonth,$toyear): " "); ?></td>
<?php
}
$day++;
}
echo "</tr>\r\n";
}
?>
</table>
</td>
</tr>
</table>
<?php
}
function mini_cal_entries($news_cat_cal,$year,$month,$day,$ today,$tomonth,$toyear)
{
global $db_name, $table, $url_home, $host, $user, $pass, $news_cat, $news_cat_cal ;
if (($day == $today) && ($month == $tomonth) && ($year == $toyear))
$dayfmt = "<font face=Arial Narrow color=#FF0000 size=1><b>$day</b></font>";
else $dayfmt = "$day";
$zipday = $day;
if (strlen ($day) ==1)
$zipday = "0"."$day";
$year = "$year";
$month = "$month";
$zipday = "$zipday";
$day = "$day";
$news_cat_cal="$news_cat_cal";
$link=@mysql_connect($host,$user,$pass);
$db=@mysql_select_db($db_name,$link);
$result=@mysql_query("select * from $table WHERE status='open' AND news_cat='$news_cat_cal' AND year='$year' AND month='$month' AND day='$zipday'");
while($row = mysql_fetch_array($result)) {
$links = "year=".$row["year"]."&month=".$row["month"]."&day=".$row["day"]."";
$dayfmt= "<a href=$url_home"."$news_cat"."/archive_day.php?"."$links><font face=Arial Narrow color=808080 size=1>$dayfmt</font></a>";
}
echo "<div align=\"center\"><font face=Arial Narrow size=1>$dayfmt</font></div>";
}
?>
__________________
**censored**
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
23-02-2003 12:43 |
|
|
Участник+
|
ANDRY,
А ты эту $news_cat как устанавливаешь?... |
[сооб. #35379]
23-02-2003 23:33 |
|
Участник+

Зарегистрирован: Feb 2002
Место проживания: RU, VLadivostok
Публикаций: 145
Статус:  |
ANDRY,
А ты эту $news_cat как устанавливаешь? Через адресную строку? Попробуй тогда вот так:
function mini_calendar($_GET['news_cat']) {
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
23-02-2003 23:33 |
|
|
Участник+
|
блин, чет невыходит, выводит
Parse error: parse error,... |
[сооб. #35400]
24-02-2003 05:16 |
|
Участник+


Зарегистрирован: May 2002
Место проживания: Новокузнецк
Публикаций: 223
Статус:  |
блин, чет невыходит, выводит
Parse error: parse error, unexpected '[', expecting ')' in D:\server\www\mysite\mini_calendar.php on line 3
quote: А ты эту $news_cat как устанавливаешь?
я её выставляю в функции
<?php mini_calendar("inet");?>
в зависимости от раздела страници, вот эта функция что сейчас показал, должна выводить те числа что относятся к разделу инет, есть и другие разделы
__________________
**censored**
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
24-02-2003 05:16 |
|
|
Участник+
|
| фу, сделал, сам даже непонял именно как, всё... |
[сооб. #35579]
25-02-2003 04:38 |
|
Участник+


Зарегистрирован: May 2002
Место проживания: Новокузнецк
Публикаций: 223
Статус:  |
фу, сделал, сам даже непонял именно как, всё методом тыка, тоесть создал новую переменную $news_cat_name в
function mini_calendar($news_cat_name) {
global $year,$month,$day,$today,$tomonth,$toyear,$news_ca
t,$url_home ;
$news_cat="$news_cat_name";
и её присвоил к $news_cat, всё пошло как надо, может из за того что переменные смешивались, мда.
кстати, незнаешь как можно сделать так чтобы, ссылки появлялись на дни, не выше сегодняшней даты, это мне надо для того, например я захочю добавить несколько новостей вперёд на дня 2-3 но её недолжны видеть никто пока дата несровняется с той что указал при добавлении новости
__________________
**censored**
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
25-02-2003 04:38 |
|
|
|
Формат времени GMT. Текущее время 10:20.
|
Правила форума:
Вы не можете создавать новые темы.
Вы не можете отвечать на существующие темы.
Вы не можете прикреплять файлы.
Вы не можете редактировать свои сообщения. |
HTML теги выкл.
Спец. код вкл.
Смайлики вкл.
[IMG] тег выкл.
|
|
|
|
| |
Page generated in 4.38013411 seconds (99.84% PHP - 0.16% MySQL) with 23 queries.
|
 |