Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Помогите донастроить календарь
 
 автор: rusweta   (03.10.2006 в 00:39)   письмо автору
 
 

Здравствуйте,
вот код календаря:


<?php

function superpupercalendar(){

$aMonths = array("Январь""Февраль""Март""Апрель""Май""Июнь"
"Июль""Август""Сентябрь""Октябрь""Ноябрь""Декабрь");

global 
$DB;
$iH=IntVal(FmtDate($date,"H"));
$iI=IntVal(FmtDate($date,"I"));
$iS=IntVal(FmtDate($date,"S"));
if(
$iH+$iI+$iS>0)
    
$dtformat "FULL";
else
    
$dtformat "SHORT";

$aDate ParseDate(FmtDate($date,"D.M.Y"),"dmy");
if(
is_array($aDate) && $aDate[2] > 1971 && $aDate[2] < 2037//unix 32-bit timestamp
    
$currDate mktime($iH$iI$iS$aDate[1], $aDate[0], $aDate[2]);
else
    
$currDate time();

$y1 intval(date("Y"$currDate));
$m1 intval(date("n"$currDate));
$d1 intval(date("j"$currDate));

$aInitDate ParseDate(FmtDate($initdate,"D.M.Y"), "dmy");
if(
is_array($aInitDate) && $aInitDate[2] > 1971 && $aInitDate[2] < 2037)
{
    
$initDate mktime($iH$iI$iS$aInitDate[1], $aInitDate[0], 
$aInitDate[2]);
    
$init_y intval(date("Y"$initDate));
    
$init_m intval(date("n"$initDate));
    
$init_d intval(date("j"$initDate));
}
else
    
$init_y $init_m $init_d 0;

$today time();
$today_y intval(date("Y"$today));
$today_m intval(date("n"$today));
$today_d intval(date("j"$today));

$sParam DeleteParam(array("date"));
if(
$sParam <> "")
    
$sParam "&amp;".$sParam;
?>
<table width="100%" border="0" cellspacing="1" cellpadding="2">
<tr>
    <td class="headbg" nowrap align="center"><font class="headtext">
        <a class="headtext" title="<?echo GetMessage("calend_prev_mon")?>"
style="text-decoration:none; color:red;" href="<?echo
$sDocPath."?date=".GetTime(mktime($iH$iI$iS$m1-11$y1),
$dtformat).$sParam?>">&laquo;</a>
        <a title="<?echo GetMessage("calend_per_mon")?>"
href="calend.php?speriod=<?echo GetTime(mktime($iH$iI$iS,  $m11,
$y1), $dtformat)?>,<?echo GetTime(mktime($iH$iI$iS,  $m1+10$y1),
$dtformat)?>" class="headtext"><?echo $aMonths[$m1-1]?></a>
        <a class="headtext" title="<?echo GetMessage("calend_next_mon")?>"
style="text-decoration:none; color:red;" href="<?echo
$sDocPath."?date=".GetTime(mktime($iH$iI$iS$m1+11$y1),
$dtformat).$sParam?>">&raquo;</a>
    </font></td>
    <td align="center" class="headbg" nowrap><font class="headtext">
        <a class="headtext" title="<?echo GetMessage("calend_prev_year")?>"
style="text-decoration:none; color:red;" href="<?echo
$sDocPath."?date=".GetTime(mktime($iH$iI$iS$m11$y1-1),
$dtformat).$sParam?>">&laquo;</a>
        <a title="<?echo GetMessage("calend_per_year")?>"
href="calend.php?speriod=<?echo GetTime(mktime($iH$iI$iS11,
$y1), $dtformat)?>,<?echo GetTime(mktime($iH$iI$iS10$y1+1),
$dtformat)?>" class="headtext"><?echo $y1?></a>
        <a class="headtext" title="<?echo GetMessage("calend_next_year")?>"
style="text-decoration:none; color:red;" href="<?echo
$sDocPath."?date=".GetTime(mktime($iH$iI$iS$m11$y1+1),
$dtformat).$sParam?>">&raquo;</a>
    </font></td>
    <td class="headbg" align="center"><a title="<?echo
GetMessage("calend_curr")?>" href="<?echo $sDocPath."?date=".GetTime($today,
$dtformat).$sParam?>" class="headtext" style="text-decoration:none;
color:red;">*</a></td>
</tr>
</table>
<table width="100%" border="0" cellspacing="2" cellpadding="1">
<tr align="center">
    <td></td>
    <td class="headtext">пн</td>
    <td class="headtext">вт</td>
    <td class="headtext">ср</td>
    <td class="headtext">чт</td>
    <td class="headtext">пт</td>
    <td class="headtext">сб</td>
    <td class="headtext">вс</td>
</tr>
<?
    $firstDate 
mktime($iH$iI$iS$m11$y1);
    
$firstDay intval(date("w"$firstDate)-1);
    if(
$firstDay == -1)
        
$firstDay 6;

    
$bBreak false;
    for(
$i=0$i<6$i++)
    {
        
$row $i*7;
        if(
$i && intval(date("j"mktime($iH$iI$iS$m1,
1-$firstDay+$row$y1))) == 1)
            break;

        echo 
"<tr align=\"center\">\n".
            
"<td><a title=\"".GetMessage("calend_per_week")."\"
href=\"calend.php?speriod="
.GetTime(mktime($iH$iI$iS$m1,
1-$firstDay+$row$y1), $dtformat).",".GetTime(mktime($iH$iI$iS$m1,
1-$firstDay+$row+6$y1), $dtformat)."\" class=\"headtext\"
style=\"text-decoration:none\">&gt;&nbsp;</a></td>"
;
        for(
$j=0$j<7$j++)
        {
            
$date mktime($iH$iI$iS$m11-$firstDay+$row+$j$y1);
            
$y intval(date("Y"$date));
            
$m intval(date("n"$date));
            
$d intval(date("j"$date));

            if(
$i && $d == 1)
                
$bBreak true;

            
$sStyle "";
            if(
$row+$j+$firstDay && !$bBreak)
            {
                if(
$d == $today_d && $m == $today_m && $y == $today_y)
                    
$sStyle .= "background-color:#EBEBEB; ";
                if(
$d == $init_d && $m == $init_m && $y == $init_y)
                    
$sStyle .= "border:1px solid #1E5995; ";
            }
            echo 
"<td style=\"".$sStyle."\">";
            if(
$row+$j+$firstDay && !$bBreak)
            {
                echo
                    
"<font class=\"".($j==|| 
$j=="holidaytext":"daytext")."\">".
                    
"<a title=\"".GetMessage("calend_date")."\" class=\"".
(
$j==|| $j==6"holidaytext":"daytext")."\" 
href=\"calend.php?sdate="
.GetTime($date$dtformat)."\">".$d."</a>".
                    
"</font>";
            }
            else
                echo 
"<font class=\"daytext\">&nbsp;</font>";
            echo 
"</td>";
        }
        echo 
"</tr>";
        if(
$bBreak)
            break;
    }

echo 
"</table>";
}


superpupercalendar();

?>


Смысл в том, что посетитель кликает на нужную дату, она передается в параметры урл, а на основе урла следующая функция делает выборку статей.
Это все работает, но при переходе по датам они не подсвечиваются, хотя выбранная дата должна выделяться рамочкой.
Точно так же если кликнуть ссылку месяц назад, то в урл все отображается верно, а на странице остается сегодняшняя дата.
Немного сумбурно, но тестовую версию можно вот тут посмотреть http://www.somus.ru/calend.php - там пока вместо выборки статей просто выводится выбранная дата

   
 
 автор: Lelik   (03.10.2006 в 00:49)   письмо автору
 
   для: rusweta   (03.10.2006 в 00:39)
 

Это все работает, но при переходе по датам они не подсвечиваются, хотя выбранная дата должна выделяться рамочкой.

рамочкой? она подсвечивается серым фоном

   
 
 автор: rusweta   (03.10.2006 в 00:54)   письмо автору
 
   для: Lelik   (03.10.2006 в 00:49)
 

серым фоном подсвечивается текущая дата, а вот та, по которой кликнули по задумке должна подсвечивться рамочкой))
вот часть кода:

if($d == $init_d && $m == $init_m && $y == $init_y) 
                    $sStyle .= "border:1px solid #1E5995; "; 

   
 
 автор: Lelik   (03.10.2006 в 01:13)   письмо автору
 
   для: rusweta   (03.10.2006 в 00:54)
 

когда? во время клика или после возвращения на данную страницу?

   
 
 автор: rusweta   (03.10.2006 в 01:41)   письмо автору
 
   для: Lelik   (03.10.2006 в 01:13)
 

после возвращения

   
 
 автор: Lelik   (03.10.2006 в 02:36)   письмо автору
 
   для: rusweta   (03.10.2006 в 01:41)
 

тогда последнюю дату в сессию записывать надо.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования