antoneskoV
Новичок
Есть проблемка на старом сайте находился новостной движок с календарем статичным (показывал только текущий календарь на месяц). Была поставлена задача оживить календарь и сделать так что бы при нажатий на дату выдавалась новость за этот день! Знания в PHP не очень.
Но идея по решению есть хотел бы ее реализовать :huh: . Во первых не хочу менять движок это слишком сложно. :blink: На сайте есть функция диапазона новостей которая фактически при выставлений диапазона с одинаковой датой отображают новости за указанный день. И вот тут вопрос как соединить календарь из одной программы что бы он при нажатий на дату передавал и задавал диапазон на один день. Возможно это и будет детище Франкенштейна, но мне главное что бы он работал!
Код календаря! Я его немного подчистил своими корявыми ручками. И поменял устаревшие функций.
И код диапазона от старого календаря
Заранее спасибо за помощь!

Но идея по решению есть хотел бы ее реализовать :huh: . Во первых не хочу менять движок это слишком сложно. :blink: На сайте есть функция диапазона новостей которая фактически при выставлений диапазона с одинаковой датой отображают новости за указанный день. И вот тут вопрос как соединить календарь из одной программы что бы он при нажатий на дату передавал и задавал диапазон на один день. Возможно это и будет детище Франкенштейна, но мне главное что бы он работал!
Код календаря! Я его немного подчистил своими корявыми ручками. И поменял устаревшие функций.
PHP:
<td width=150 valign=top>
<?
$now_month = date("n",time());
$now_year = date("Y",time());
$now_today = date("j", time());
include("admin/config.inf");
mysql_connect ($dbhostname , $dbusername , $dbpassword);
mysql_select_db($database);
if (isset($_GET['month'])) {
$month = $_GET['month'];
$month = str_replace ("[[:space:]]", "", $month);
$month = str_replace ("[[:punct:]]", "", $month);
$month = str_replace ("[[:alpha:]]", "", $month);
if ($month < 1) { $month = 12; }
if ($month > 12) { $month = 1; }
}
if (isset($_GET['year'])) {
$year = $_GET['year'];
$year = str_replace ("[[:space:]]", "", $year);
$year = str_replace ("[[:punct:]]", "", $year);
$year = str_replace ("[[:alpha:]]", "", $year);
if ($year < 1990) { $year = 1990; }
if ($year > 2035) { $year = 2035; }
}
if (isset($_GET['today'])) {
$today = $_GET['today'];
$today = str_replace ("[[:space:]]", "", $today);
$today = str_replace ("[[:punct:]]", "", $today);
$today = str_replace ("[[:alpha:]]", "", $today);
}
function denned_to_rus($denned)
{
if($denned==0) $denned=7;
return $denned;
}
$month = (isset($month)) ? $month : date("n",time());
$year = (isset($year)) ? $year : date("Y",time());
$today = (isset($today))? $today : date("j", time());
$daylong = date("l",mktime(1,1,1,$month,$today,$year)); //день недели текст англ.
$monthlong = date("F",mktime(1,1,1,$month,$today,$year)); //название месяца англ.
$dayone = date("w",mktime(1,1,1,$month,1,$year)); //день недели цифрой
$numdays = date("t",mktime(1,1,1,$month,1,$year)); //количество дней в месяце
$alldays = array('Пн','Вт','Ср','Чт','Пт','<font color=red>Сб</font>','<font color=red>Вс</font>');
$next_year = $year + 1;
$last_year = $year - 1;
$next_month = $month + 1;
$last_month = $month - 1;
if ($today > $numdays) { $today--; }
if($month == "1" ){$month_ru="январь";}
elseif($month == "2" ){$month_ru="февраль";}
elseif($month == "3" ){$month_ru="март";}
elseif($month == "4" ){$month_ru="апрель";}
elseif($month == "5" ){$month_ru="май";}
elseif($month == "6" ){$month_ru="июнь";}
elseif($month == "7" ){$month_ru="июль";}
elseif($month == "8" ){$month_ru="август";}
elseif($month == "9" ){$month_ru="сентябрь";}
elseif($month == "10"){$month_ru="октябрь";}
elseif($month == "11"){$month_ru="ноябрь";}
elseif($month == "12"){$month_ru="декабрь";}
//echo $month;
//echo $dayone;
echo "<table border=0 cellpadding=4 cellspacing=1 width=170>";
//выводим название года
echo "<tr bgcolor=#E7EBEF>
<td align=center><a href=".$PHP_SELF."?year=".$last_year."&today=".$today."&month=".$month.">«</a></td>";
echo "<td width=100% class=\"cellbg\" colspan=\"5\" valign=\"middle\" align=\"center\">
<b>".$year." г.</b></td>\n";
echo "<td align=center><a href=".$PHP_SELF."?year=".$next_year."&today=".$today."&month=".$month.">»</a></td>";
echo "</tr></table>";
//выводим название месяца
echo "<table border=0 cellpadding=4 cellspacing=1 width=170>";
echo "<tr bgcolor=#E7EBEF>
<td align=center><a href=".$PHP_SELF."?year=".$year."&today=".$today."&month=".$last_month.">«</a></td>";
echo "<td width=100% class=\"cellbg\" colspan=\"5\" valign=\"middle\" align=\"center\">
<b>".$month_ru."</b></td>\n";
echo "<td align=center><a href=".$PHP_SELF."?year=".$year."&today=".$today."&month=".$next_month.">»</a></td>";
echo "</tr></table>";
$denned1day = denned_to_rus(date("w",mktime(1,1,1,$month,1,$year)));
$dennedNOWday = denned_to_rus(date("w",mktime(1,1,1,$month,$today,$year)));
$dennedLASTday = denned_to_rus(date("w",mktime(1,1,1,$month,$numdays,$year)));
$num_of_zero_days = 7 - $dennedLASTday;
$days=array();
echo "<table border=0 cellpadding=2 cellspacing=1 width=170><tr>";
//выводим дни недели
foreach($alldays as $value) {
echo "<td valign=\"middle\" align=\"center\" width=\"10%\">
<b>".$value."</b></td>\n";
}
echo "</tr>\n<tr>\n";
//выводим пустые дни месяца как пробелы
echo "<tr>\n";
for($z=1;$z<$denned1day;$z++)
{
echo "<td valign=\"middle\" align=\"center\"> </td>\n";
}
//выводим дни месяца
for($d=1;$d<=$numdays;$d++)
{
$days[$d]=denned_to_rus(date("w",mktime(1,1,1,$month,$d,$year)));
if($days[$d]==1) echo "<tr>\n";
if ($d == $today)
{
echo "<td valign=\"middle\" align=\"center\" bgcolor=#B9D7D5>";
$news_date = $year."-".$month."-".$d;
$news_result = mysql_query("select * from ".$table_dnp_news." where datum = '".$news_date."'");
$news_rows = mysql_num_rows($news_result);
if($news_rows >0) {
echo "<a class=linkz href=\"".$_SERVER['PHP_SELF']."?year=".$year."&today=".$d."&month=".$month."\">".$d."</a>";
}
else {
echo $d;
}
echo "</td>\n";
}
else {
echo "<td valign=\"middle\" align=\"center\">";
$news_date = $year."-".$month."-".$d;
$news_result = mysql_query("select * from ".$table_dnp_news." where datum = '".$news_date."'");
$news_rows = mysql_num_rows($news_result);
if($news_rows >0) {
echo "<a class=linkz href=\"".$_SERVER['PHP_SELF']."?year=".$year."&today=".$d."&month=".$month."\">".$d."</a>";
}
else {
echo $d;
}
echo "</td>\n";
}
if($days[$d]==7) echo "</tr>\n\n";
}
for($z=0;$z<$num_of_zero_days;$z++)
{
echo "<td valign=\"middle\" align=\"center\"> </td>\n";
}
echo "</tr>\n";
echo "</table>";
//выводим сегодняшнюю дату с ссылкой
echo "<table border=0 cellpadding=4 cellspacing=1 width=170>";
echo "<tr bgcolor=#E7EBEF>
<td width=100% align=center><a href=".$PHP_SELF."?year=".$now_year."&today=".$now_today."&month=".$now_month.">
<font color=red>.: Сегодня: ".$now_today.".".$now_month.".".$now_year." :.</font></a></td>";
echo "</tr></table>";
?>
PHP:
<?
function diapazon($tofrom)
{
?> <select title="день" name="day_<?=@$tofrom?>">
<?
for ($i = 1; $i <= 31; $i++) {
echo '<option value="'.$i.'"';
if ($i == date("d")) {echo ' selected="selected"';}
echo '>'.$i.'</option>';}
?>
</select><!--дд-->
<select title="місяць" name="month_<?=@$tofrom?>">
<?
for ($i = 1; $i <= 12; $i++) {
echo '<option value="'.$i.'"';
if ($i == date("m")) {echo ' selected="selected"';}
echo '>'.$i.'</option>';}
?>
</select><!--мм-->
<select title="рік" name="year_<?=@$tofrom?>">
<?
for ($i = 2009; $i <= date("Y"); $i++) {
echo '<option value="'.$i.'"';
if ($i == date("Y")) {echo ' selected="selected"';}
echo '>'.$i.'</option>';}
?>
</select>
<?
}
?>
<script language="javascript">
function submitCalendar() {
var showUrl = "index.php?lng=<?=@$lng?>&cont=news&wid=5";
var from = "&from="
var to = "&to="
var from_y = Number(document.calendar.year_from.options[document.calendar.year_from.selectedIndex].value);
var from_m = Number(document.calendar.month_from.options[document.calendar.month_from.selectedIndex].value);
var from_d = Number(document.calendar.day_from.options[document.calendar.day_from.selectedIndex].value);
from = from + from_y + '-' + from_m + '-' + from_d;
var to_y = Number(document.calendar.year_to.options[document.calendar.year_to.selectedIndex].value);
var to_m = Number(document.calendar.month_to.options[document.calendar.month_to.selectedIndex].value);
var to_d = Number(document.calendar.day_to.options[document.calendar.day_to.selectedIndex].value);
to = to + to_y + '-' + to_m + '-' + to_d;
if(from_y > to_y){
alert('невірно задано рік');
}else if((from_y == to_y) && (from_m > to_m)){
alert('невірно задано місяць');
}else if((from_y == to_y) && (from_m == to_m) && (from_d > to_d)){
alert('невірно задано день');
}else {
showUrl = showUrl + from + to;
document.location.replace(showUrl);
}
}
</script>
<form name="calendar" method="post">
<table width="166" border="0" cellpadding="0" cellspacing="0">
<tr><td class="calendar" align="center" nowrap="nowrap"><center><?=@$s[52]?></center></td></tr>
<tr><td class="calendar" align="center" nowrap="nowrap"><?diapazon('from');?></td></tr>
<tr><td class="calendar" align="center" nowrap="nowrap"><?=@$s[53]?></td></tr>
<tr><td class="calendar" align="center" nowrap="nowrap"><?diapazon('to');?></td></tr>
<tr><td class="buttlink" align="center" nowrap="nowrap">[<a class="buttlink" href="javascript:%20submitCalendar();"><?=@$s[54]?></a>]</td></tr>
</table></form>

