![]() |
Показаны 8 сообщений на этой странице |
Форум сетевых администраторов (http://netadmin.ws/forum/index.php)
- PHP (http://netadmin.ws/forum/forumdisplay.php?forumid=6)
-- календарь загнать в функцию (http://netadmin.ws/forum/showthread.php?threadid=4461)
календарь загнать в функцию
Cделал календарь, работает так как мне и надо было, но вот осталось единственное что мне надо, это загнать весь код в одну функцию, что бы можно было вызывать её именно этой функцией.
вот код
<?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>";
}
?>
__________________
Web-Zona
В третьей строке приведенного выше кода напиши:
function Calendar() {
В предпоследней:
}
А те функции, что уже здесь установлены (mini_cal_entries и get_offset_time) - вынеси выше или ниже функции calendar(). В самой calendar() их просто вызывай потом (они ведь уже будут объявлены).
спасибо, получилось, только вот ещё, тут получается что нужно высотвлять несколько аргументов
<?php Calendar(2003,02,23,23,02,2003);?>
из которых я понял два первых аргумента, это год потом идёт месяц, дальше незнаю зачем то день, и далее следующие аргументы $today,$tomonth,$toyear непонятно для чего они нужны, я просто вытсавил от понта дату любую, изменений незаметил.
Вообщем мне надо при выводе календаря, вместо этой функции <?php Calendar(2003,02,23,23,02,2003);?> такую <?php Calendar();?>
тоесть избавиться от аргументов, их бы гдени будь указать в самой функции, но вот как это сделать?
__________________
Web-Zona
ANDRY,
Там же, где у тебя задаются параметры для таблицы, указывай и аргументы функции.
всё с этим я разобрался, убрал я эту функцию 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
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>";
}
?>
__________________
Web-Zona
ANDRY,
А ты эту $news_cat как устанавливаешь? Через адресную строку? Попробуй тогда вот так:
function mini_calendar($_GET['news_cat']) {
блин, чет невыходит, выводит
Parse error: parse error, unexpected '[', expecting ')' in D:\server\www\mysite\mini_calendar.php on line 3
quote:
А ты эту $news_cat как устанавливаешь?
__________________
Web-Zona
фу, сделал, сам даже непонял именно как, всё методом тыка, тоесть создал новую переменную $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 но её недолжны видеть никто пока дата несровняется с той что указал при добавлении новости
__________________
Web-Zona
| Формат времени GMT. Текущее время 12:25. | Показаны 8 сообщений на этой странице |
Powered by: vBulletin Version 2.2.4
Copyright © Jelsoft Enterprises Limited 2000, 2001.