Объединения календаря новостей и новостного движка

antoneskoV

Новичок
Есть проблемка на старом сайте находился новостной движок с календарем статичным (показывал только текущий календарь на месяц). Была поставлена задача оживить календарь и сделать так что бы при нажатий на дату выдавалась новость за этот день! Знания в PHP не очень.

Но идея по решению есть хотел бы ее реализовать :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.">&laquo;</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.">&raquo;</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.">&laquo;</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.">&raquo;</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\">&nbsp;</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\">&nbsp;</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>
:) Заранее спасибо за помощь! :)
 

antoneskoV

Новичок
Наверно распишу свои домыслы может они и глупые!

Я так понимаю значения диапазона вносятся кодом
PHP:
<tr><td class="calendar" align="center" nowrap="nowrap"><?diapazon('from');?></td></tr>
<tr><td class="calendar" align="center" nowrap="nowrap"><?diapazon('to');?></td></tr>
В
PHP:
href="javascript:%20submitCalendar
То есть сюда

PHP:
<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>
Задаеться значения здесь function diapazon($tofrom)…….. Сразу вопрос как вносятся @$tofrom – это же не массив или… :huh:
И как передать значения даты из календаря в @$tofrom :huh:
 
Сверху