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

Форум PHP

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

 

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

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

тема: Создание календаря
 
 автор: pautina   (09.06.2008 в 11:54)   письмо автору
 
 

Здравствуйте Уважаемое сообщество. У меня есть следующий участок кода, реализующий создание календаря.

<?php  // Программный участок кода реализующий календарь
function pc_calendar($month$year$opts '')
 {
 
// установка опций по умолчанию //
 
if (! is_array($opts)) { $opts = array(); }
 if (! isset(
$opts['today_color'])) { $opts['today_color'] = '#FFFF00'; }
 if (! isset(
$opts['month_link']))
  { 
$opts['month_link'] = '<a href="'.$_SERVER['PHP_SELF'].'?month=%d&year=%d">%s</a>'; }
  
 list(
$this_month$this_year$this_day) = split(',',strftime('%m, %Y, %d'));
 
$day_highlight = (($this_month == $month) && ($this_year == $year));
 
 list(
$prev_month$prev_year) = 
     
split(','strftime('%m, %Y',mktime(000$month-11$year )));
 
$prev_month_link sprintf($opts['month_link'], $prev_month$prev_year'&lt;'); 
 
 list(
$next_month$next_year) = 
    
split(','strftime('%m, %Y'mktime(000$month+11$year)));
 
$next_month_link sprintf($opts['month_link'], $next_month$next_year'&gt;');
?>
 <table border="0" cellpadding="2" cellspacing="0" align="center">
  <tr>
   <td align="left">
    <?php print $prev_month_link ?>
   </td>
   <td colspan="5" align="center">
    <?php print strftime('%B, %Y'mktime(000$month1$year)); ?>
   </td>
   <td align="right">
    <?php print $next_month_link ?>
   </td>
  </tr>
 <?php 
   $totaldays 
date('t'mktime(000$month1$year));
   
   
// Выводим дни недели
   
print '<tr>';
   
$weekdays = array('Su''Mo''Tu''We''Th''Fr''Sa');
   while (list(
$k$v) = each($weekdays))
    {
     print 
'<td align="center">'.$v.'</td>';
    }
   print 
'</tr><tr>';
   
   
// Выравниваем первый день месяца по соответствующему дню недели
   
$day_offset date("w"mktime(000$month1$year));
   if (
$day_offset 0)
    {
    for (
$i 0$i $day_offset$i++) { print '<td>&nbsp;</td>'; }
    }
   
$yesterday time() - 84600;
   
   
// Выводим дни
   
for ($day 1$day <= $totaldays$day++)
    {
    
$day_secs mktime(000$month$day$year);
    if (
$day_secs >= $yesterday)
     {
     if (
$day_highlight && ($day == $this_day))
      {
       print 
sprintf('<td align="center" bgcolor="%s">%d</td>',
                     
$opts['today_color'], $day);
      }
      else
      {
       print 
sprintf('<td align="center">%d</td>',$day);
      }
     }
    else
     {
      print 
sprintf('<td align="center">%d</td>'$day);
     }
   
$day_offset++;
   
   
// Начинаем новую строку каждую неделю
   
if ($day_offset == 7)
    {
     
$day_offset =0;
     print 
"</tr>\n";
     if (
$day $totaldays) { print '<tr>'; }
    }
   }
   
   
// Заполнение последней недели пробелами
   
if ($day_offset 0) { $day_offset $day_offset; }
   if (
$day_offset 0
     { 
     for (
$i 0$i $day_offset$i++) { print '<td>&nbsp;</td>'; }
     }
    print 
'</tr></table>';
 }
 
?> 
 
 <?php 
 
list($month$year) = explode(',',date('m,Y'));
 
pc_calendar($month$year);
 
?>

Какие участки кода в нём мне изменить чтобы
- название месяцов было на русском языке
- осуществлялся переход к следующему или предидущему месяцу
- название дней недели было на русском языке, и начиналось не с воскресенья а с понедельника.

   
 
 автор: elenaki   (09.06.2008 в 12:01)   письмо автору
 
   для: pautina   (09.06.2008 в 11:54)
 

- название дней недели было на русском языке, и начиналось не с воскресенья а с понедельника

==========================================

CM: $weekdays = array('Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa');

   
 
 автор: BinLaden   (09.06.2008 в 12:10)   письмо автору
 
   для: pautina   (09.06.2008 в 11:54)
 

> название дней недели было на русском языке, и начиналось не с воскресенья а с понедельника

Уже подсказали, но не забудьте поставить Sunday (Su) в конец массива и измените строку

> for ($day = 1; $day <= $totaldays; $day++)

На

> for ($day = 2; $day <= $totaldays; $day++)

> осуществлялся переход к следующему или предидущему месяцу

Проверяйте $_GET на наличие month и year и, в случае успеха, передавайте это в качестве аргументов функции.

> название месяцов было на русском языке

Следует изменить этот участок кода:

> <?php print strftime('%B, %Y', mktime(0, 0, 0, $month, 1, $year)); ?>

Я его не трогал. Можете применить str_replace(), например.

   
 
 автор: Assessor   (09.06.2008 в 13:30)   письмо автору
 
   для: pautina   (09.06.2008 в 11:54)
 

С понедельника дни:

// Выравниваем первый день месяца по соответствующему дню недели 
$day_offset = date("w", mktime(0, 0, 0, $month, 1, $year)); 


на

// Выравниваем первый день месяца по соответствующему дню недели 
$day_offset = date("w", mktime(0, 0, 0, $month, 0, $year));

   
 
 автор: pautina   (09.06.2008 в 14:40)   письмо автору
 
   для: Assessor   (09.06.2008 в 13:30)
 

А Вы ни скажете как мне сделать чтобы осуществлялся переход с текущего месяца на следуюший, и с текущего на предидущий.
Код вроде правильный а перехода месяца неосуществляется.

list($prev_month, $prev_year) =  
     split(',', strftime('%m, %Y',mktime(0, 0, 0, $month-1, 1, $year ))); 
 $prev_month_link = sprintf($opts['month_link'], $prev_month, $prev_year, '&lt;');  
  
 list($next_month, $next_year) =  
    split(',', strftime('%m, %Y', mktime(0, 0, 0, $month+1, 1, $year))); 
 $next_month_link = sprintf($opts['month_link'], $next_month, $next_year, '&gt;'); 

$month-1, $month+1 - цыфра месяца должна либо уменьшатся либо увеличиватся.
И должен выводится либо следующий либо предидущий месяц, но перехода нет. Почему, что мне нужно изменить?

И по русификации месяцев Вы сказали что нужно работать с строкой
<?php print strftime('%B, %Y'mktime(000$month1$year)); ?>

Вот этот код можно как то использовать для создания месяцев на русском языке

$month2=array(1=>'январь', 'февраль', 'март', 'апрель', 'май', 'июнь', 'июль', 'август', 'сентябрь', 'октябрь', 'ноябрь', 'декабрь');

   
 
 автор: BinLaden   (09.06.2008 в 17:22)   письмо автору
 
   для: pautina   (09.06.2008 в 14:40)
 

Можете сделать так:

<?php
$month_arr 
= array(1=>'январь''февраль''март''апрель''май''июнь''июль''август''сентябрь''октябрь''ноябрь''декабрь');
echo 
$month_arr[intval($month)], ',  'strftime('%Y'mktime(000$month1$year));
?>


> Код вроде правильный а перехода месяца неосуществляется
Посмотрите в адресную строку при нажатии на ссылку. Видите параметры month и year? Их нужно передавать функции в качестве аргументов:

<?php
$month 
= isset( $_GET['month'] ) ? (int) $_GET['month'] : date('m');
$year = isset( $_GET['year'] ) ? (int) $_GET['year'] : date('Y');

if( 
$month || $month 12 || $year 1970 || $year 2037 ) {
         echo 
'Неверные данные';
}
else
{
         
pc_calendar($month$year);
}
?>

   
 
 автор: pautina   (09.06.2008 в 20:09)   письмо автору
 
   для: BinLaden   (09.06.2008 в 17:22)
 

Да всё выводится как и нужно.
А вы ни скажете почему после перехода например на 2 месяца вперёд, и нажатия кнопки обновить, месяц не обновляется до текущего, а остаётся таким каким и был. Оновление не происходит.
Весь код сейчас такой.

<?php  // Программный участок кода реализующий календарь
function pc_calendar($month$year$opts '')
 {
 
// установка опций по умолчанию //
 
if (! is_array($opts)) { $opts = array(); }
 if (! isset(
$opts['today_color'])) { $opts['today_color'] = '#FFFF00'; }
 if (! isset(
$opts['month_link']))
  { 
$opts['month_link'] = '<a href="'.$_SERVER['PHP_SELF'].'?month=%d&year=%d">%s</a>'; }
 
 
 
$month = isset( $_GET['month'] ) ? (int) $_GET['month'] : date('m'); 
 
$year = isset( $_GET['year'] ) ? (int) $_GET['year'] : date('Y'); 

 list(
$this_month$this_year$this_day) = split(',',strftime('%m, %Y, %d'));
 
$day_highlight = (($this_month == $month) && ($this_year == $year));
 
 list(
$prev_month$prev_year) = 
     
split(','strftime('%m, %Y',mktime(000$month-11$year )));
 
$prev_month_link sprintf($opts['month_link'], $prev_month$prev_year'&lt;'); 
 
 list(
$next_month$next_year) = 
    
split(','strftime('%m, %Y'mktime(000$month+11$year)));
 
$next_month_link sprintf($opts['month_link'], $next_month$next_year'&gt;');
?>
 <table border="0" cellpadding="2" cellspacing="0" align="center">
  <tr>
   <td align="left">
    <?php print $prev_month_link ?>
   </td>
   <td colspan="5" align="center">
    <?php // Вывод месяцев на русском языке
         
$month_arr=array(1=>'январь''февраль''март''апрель''май''июнь''июль''август''сентябрь''октябрь''ноябрь''декабрь');
         echo 
$month_arr[intval($month)], ',  'strftime('%Y'mktime(000$month1$year)); 

        
// print strftime('%B, %Y', mktime(0, 0, 0, $month, 1, $year)); 
     
    
    
?>
   </td>
   <td align="right">
    <?php print $next_month_link ?>
   </td>
  </tr>
 <?php 
   $totaldays 
date('t'mktime(000$month1$year));
   
   
// Выводим дни недели
   
print '<tr>';
   
$weekdays = array('Пн''Вт''Ср''Чт''Пт''Сб''Вс');
   while (list(
$k$v) = each($weekdays))
    {
     print 
'<td align="center">'.$v.'</td>';
    }
   print 
'</tr><tr>';
   
   
// Выравниваем первый день месяца по соответствующему дню недели
   
$day_offset date("w"mktime(000$month0$year));
   if (
$day_offset 0)
    {
    for (
$i 0$i $day_offset$i++) { print '<td>&nbsp;</td>'; }
    }
   
$yesterday time() - 84600;
   
   
// Выводим дни
   
for ($day 1$day <= $totaldays$day++)
    {
    
$day_secs mktime(000$month$day$year);
    if (
$day_secs >= $yesterday)
     {
     if (
$day_highlight && ($day == $this_day))
      {
       print 
sprintf('<td align="center" bgcolor="%s">%d</td>',
                     
$opts['today_color'], $day);
      }
      else
      {
       print 
sprintf('<td align="center">%d</td>',$day);
      }
     }
    else
     {
      print 
sprintf('<td align="center">%d</td>'$day);
     }
   
$day_offset++;
   
   
// Начинаем новую строку каждую неделю
   
if ($day_offset == 7)
    {
     
$day_offset =0;
     print 
"</tr>\n";
     if (
$day $totaldays) { print '<tr>'; }
    }
   }
   
   
// Заполнение последней недели пробелами
   
if ($day_offset 0) { $day_offset $day_offset; }
   if (
$day_offset 0
     { 
     for (
$i 0$i $day_offset$i++) { print '<td>&nbsp;</td>'; }
     }
    print 
'</tr></table>';
 }
 
?> 
 
 <?php 
  
 
list($month$year) = explode(',',date('m,Y'));
 
pc_calendar($month$year); 
 
 
?>

   
 
 автор: Trianon   (09.06.2008 в 20:24)   письмо автору
 
   для: pautina   (09.06.2008 в 20:09)
 

А почему он с кнопки "обновить" должен уходить на текущий месяц?

   
 
 автор: pautina   (10.06.2008 в 10:15)   письмо автору
 
   для: Trianon   (09.06.2008 в 20:24)
 

Ну так было бы правильнее. Вы ни скажете как сделать обновление до текущего месяца?

   
 
 автор: Trianon   (10.06.2008 в 20:00)   письмо автору
 
   для: pautina   (10.06.2008 в 10:15)
 

>Ну так было бы правильнее.
Не было бы . Обновление страницы - не более, чем обновление страницы.
И если последняя страница запрошена для другого месяца, другой месяц и будет поазан.

>Вы ни скажете как сделать обновление до текущего месяца?

Ни скажу.
Сделайте еще одну ссылку (без параметров)- текущий месяц. И пользуйтесь ей для быстрого возврата.

   
 
 автор: pautina   (11.06.2008 в 10:21)   письмо автору
 
   для: Trianon   (10.06.2008 в 20:00)
 

А без ссылки обойтись нельзя?
Как можно сделать переход до текущего месяца при обновлении? (если конешно до обновления был переход на следующие или предидущие месяцы).

   
 
 автор: pautina   (16.06.2008 в 11:09)   письмо автору
 
   для: pautina   (11.06.2008 в 10:21)
 

Вы ни скажете как можно сделать переход до текущего месяца при обновлении?

   
 
 автор: elenaki   (16.06.2008 в 12:37)   письмо автору
 
   для: pautina   (16.06.2008 в 11:09)
 

отследить событие нажатия на F5( код клавиши - 116), и направить на страницу с нужными
параметрами в URL.

<script type="text/javascript">
  document.onkeydown = function(e) {
    e = e || window.event;
    if (e.keyCode == 116) {
      alert('OK');
    }
    return true;
  }
</script>

   
 
 автор: Петр   (16.06.2008 в 20:11)   письмо автору
 
   для: pautina   (16.06.2008 в 11:09)
 

Это совсем лишнее, если юзер открыл следующий месяц, значит он выбирает там нужную дату, вернуться к текуцему он сможет простым путем: выбрать предыдущий месяц (предыдущий для следующего как раз и будет текущим :)) или нажать в меню (или где-нибудь еще) на ссылку этой страницы (откроется календарь, соответственно без дополнительных параметров). А F5 зачем ему нажимать?
Все дело в том, что вы передаете скрипту GET-параметры (которые передаются в URL-строке браузера), а при F5, перезагружается текущая страница, соответсвенно с этими же GET-параметрами

   
 
 автор: elenaki   (16.06.2008 в 20:58)   письмо автору
 
   для: Петр   (16.06.2008 в 20:11)
 

ему это предлагали, он не хочет ссылку и не понимает, что происходит по F5...
а если юзер не одну дату выбрал? если он пролистал несколько годов/месяцев?
одним кликом назад уже не вернешься... во всех календарях делают ссылку "Сегодня",
по нажатию на которую происходит возврат на текущую дату.

   
 
 автор: pautina   (17.06.2008 в 10:27)   письмо автору
 
   для: elenaki   (16.06.2008 в 20:58)
 

Если посмотреть ресурс http://www.maxdown.ru то там есть календарь, а ссылки сегодня нет, и при обновлении происходит переход до текущего месяца, в моём же случае как сделать низнаю, и если использовать скрипт с кнопкой f5 будет ли происходит обновление в других браузерах (mozila, opera, netscape, safari например)

   
 
 автор: elenaki   (17.06.2008 в 11:00)   письмо автору
 
   для: pautina   (17.06.2008 в 10:27)
 

по этой ссылке кроме баннеров с задницами ничего нет. дайте ссылку на сам календарь.
приведенный выше код должен быть кроссбраузерным, не проверяла.

   
 
 автор: mihdan   (17.06.2008 в 11:46)   письмо автору
 
   для: pautina   (17.06.2008 в 10:27)
 

>Если посмотреть ресурс http://www.maxdown.ru то там есть календарь, а ссылки сегодня нет, и при
>обновлении происходит переход до текущего месяца, в моём же случае как сделать низнаю, и если
>использовать скрипт с кнопкой f5 будет ли происходит обновление в других браузерах (mozila, opera, netscape, safari например)

Там вообще AJAX - на на строку адресную смотрели когда по датам тыкали? Она не меняется! Отключите JS в браузере и станет ясно )))

   
 
 автор: pautina   (17.06.2008 в 12:34)   письмо автору
 
   для: mihdan   (17.06.2008 в 11:46)
 

Вы дали следующий участок кода.

<script type="text/javascript"> 
  document.onkeydown = function(e) { 
    e = e || window.event; 
    if (e.keyCode == 116) { 
      alert('OK'); 
    } 
    return true; 
  } 
</script> 

Как мне сдесь прописать ссылку? Вы сказали что неюбходимо направить на страницу с нужными
параметрами в URL.

   
 
 автор: elenaki   (17.06.2008 в 12:50)   письмо автору
 
   для: pautina   (17.06.2008 в 12:34)
 

BMECTO alert('OK')

   
 
 автор: pautina   (17.06.2008 в 13:16)   письмо автору
 
   для: elenaki   (17.06.2008 в 12:50)
 

Извините Вы ни посмотрите где ошибка
Я написал так, но не получается обновление (файл с кодом календаря - index.php)

...
if (e.keyCode == 116) {  
      document.write('<type="text/javascript" href="index.php">');
    }  
...

   
 
 автор: mechanic   (17.06.2008 в 13:51)   письмо автору
 
   для: pautina   (17.06.2008 в 13:16)
 

<type="text/javascript" href="index.php">

ошибка, кажется, на уровне днк..

   
 
 автор: pautina   (17.06.2008 в 14:09)   письмо автору
 
   для: mechanic   (17.06.2008 в 13:51)
 

Если честно ни очень понимаю? Что значит днк?
Перед type="text/javascript" ни нужно писать link rel="" - Если да? Что писать в кавычках?

   
 
 автор: pautina   (17.06.2008 в 20:33)   письмо автору
 
   для: pautina   (17.06.2008 в 14:09)
 

Я написал так

<script type="text/javascript">  // Участок кода реализует обновление до текущего месяца
  document.onkeydown = function(e) {  
    e = e || window.event;  
    if (e.keyCode == 116) {  
      document.write('<link rel="javascript" type="text/javascript" href="index.php">');
        }  
    return true;  
  }  
</script>  

Весь код календаря такой

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Untitled Document</title>
<script type="text/javascript">  // Участок кода реализует обновление до текущего месяца
  document.onkeydown = function(e) {  
    e = e || window.event;  
    if (e.keyCode == 116) {  
      document.write('<link rel="javascript" type="text/javascript" href="index.php">');
     // document.write('<link rel="stylesheet" type="text/css" href="css_1024.css">');
    }  
    return true;  
  }  
</script>  

<style type="text/css">
 #calendar { font-family:Arial, Helvetica, sans-serif; font-size:14px; top:10px;  } 
</style>
</head>

<body leftmargin="0" rightmargin="0" topmargin="0" bottommargin="0" marginwidth="0" marginheight="0">

<div id="calendar">

<?php  // Программный участок кода реализующий календарь
function pc_calendar($month$year$opts '')
 {
 
// установка опций по умолчанию //
 
if (! is_array($opts)) { $opts = array(); }
 if (! isset(
$opts['today_color'])) { $opts['today_color'] = '#FFFF00'; }
 if (! isset(
$opts['month_link']))
  { 
$opts['month_link'] = '<a href="'.$_SERVER['PHP_SELF'].'?month=%d&year=%d">%s</a>'; }
 
 
 
$month = isset( $_GET['month'] ) ? (int) $_GET['month'] : date('m'); 
 
$year = isset( $_GET['year'] ) ? (int) $_GET['year'] : date('Y'); 
 

 list(
$this_month$this_year$this_day) = split(',',strftime('%m, %Y, %d'));
 
$day_highlight = (($this_month == $month) && ($this_year == $year));
 
 list(
$prev_month$prev_year) = 
     
split(','strftime('%m, %Y',mktime(000$month-11$year )));
 
$prev_month_link sprintf($opts['month_link'], $prev_month$prev_year'&lt;'); 
 
 list(
$next_month$next_year) = 
    
split(','strftime('%m, %Y'mktime(000$month+11$year)));
 
$next_month_link sprintf($opts['month_link'], $next_month$next_year'&gt;');
?>
 <table border="0" cellpadding="2" cellspacing="0" align="center">
  <tr>
   <td align="left">
    <?php print $prev_month_link ?>
   </td>
   <td colspan="5" align="center">
    <?php // Вывод месяцев на русском языке
         
$month_arr=array(1=>'январь''февраль''март''апрель''май''июнь''июль''август''сентябрь''октябрь''ноябрь''декабрь');
         echo 
$month_arr[intval($month)], ',  'strftime('%Y'mktime(000$month1$year)); 

        
// print strftime('%B, %Y', mktime(0, 0, 0, $month, 1, $year)); 
     
    
    
?>
   </td>
   <td align="right">
    <?php print $next_month_link ?>
   </td>
  </tr>
 <?php 
   $totaldays 
date('t'mktime(000$month1$year));
   
   
// Выводим дни недели
   
print '<tr>';
   
$weekdays = array('Пн''Вт''Ср''Чт''Пт''Сб''Вс');
   while (list(
$k$v) = each($weekdays))
    {
     print 
'<td align="center">'.$v.'</td>';
    }
   print 
'</tr><tr>';
   
   
// Выравниваем первый день месяца по соответствующему дню недели
   
$day_offset date("w"mktime(000$month0$year));
   if (
$day_offset 0)
    {
    for (
$i 0$i $day_offset$i++) { print '<td>&nbsp;</td>'; }
    }
   
$yesterday time() - 84600;
   
   
// Выводим дни
   
for ($day 1$day <= $totaldays$day++)
    {
    
$day_secs mktime(000$month$day$year);
    if (
$day_secs >= $yesterday)
     {
     if (
$day_highlight && ($day == $this_day))
      {
       print 
sprintf('<td align="center" bgcolor="%s">%d</td>',
                     
$opts['today_color'], $day);
      }
      else
      {
       print 
sprintf('<td align="center">%d</td>',$day);
      }
     }
    else
     {
      print 
sprintf('<td align="center">%d</td>'$day);
     }
   
$day_offset++;
   
   
// Начинаем новую строку каждую неделю
   
if ($day_offset == 7)
    {
     
$day_offset =0;
     print 
"</tr>\n";
     if (
$day $totaldays) { print '<tr>'; }
    }
   }
   
   
// Заполнение последней недели пробелами
   
if ($day_offset 0) { $day_offset $day_offset; }
   if (
$day_offset 0
     { 
     for (
$i 0$i $day_offset$i++) { print '<td>&nbsp;</td>'; }
     }
    print 
'</tr></table>';
 }
 
?> 
 
 <?php 
  
 
list($month$year) = explode(',',date('m,Y'));
 
pc_calendar($month$year); 
 
 
?>

</div>
</body>
</html>

Обновление почему то не происходит? Почему ни скажете?

   
 
 автор: sim5   (17.06.2008 в 21:53)   письмо автору
 
   для: pautina   (17.06.2008 в 20:33)
 

А каково конечное назначение этого календаря - просто календарь, или же для запроса архивов статей, например?

   
 
 автор: pautina   (18.06.2008 в 08:29)   письмо автору
 
   для: sim5   (17.06.2008 в 21:53)
 

Конечное назначение. Календарь. Хотел бы его использовать на сайте.
Пробовал так

<script type="text/javascript">  // Участок кода реализует обновление до текущего месяца
  document.onkeydown = function(e) {  
    e = e || window.event;  
    if (e.keyCode == 116) {  
     var js = document.createElement('script');
     js.type = "text/javascript";
     js.src = "index.php";
     document.getElementsByTagName('body')[0].appendChild(js);
    }  
    return true;  
  }  
</script>  

А обновления всё равно нет?

   
 
 автор: sim5   (18.06.2008 в 09:02)   письмо автору
 
   для: pautina   (18.06.2008 в 08:29)
 

То, что назначение, это я понял, не понятно какое. Если, скажем так, "декоративное", для просто перелисать календарь, то в ситеме есть для этого, а на сайт можно выбрать готовые на JS. Их масса, с самым разным функционалом, подправить стиль под себя и готово.
Если же это не просто ради "декора", а календарь со ссылками на документ/документы, тогда не мешало бы типа AJAX задействовать.
Что касается F5 - так и не пойму в чем проблема, если нужно запомнить состояния выбора при обновлении, так есть сессия, если по умолчанию, так это текущий год/месяц.

   
 
 автор: pautina   (18.06.2008 в 09:15)   письмо автору
 
   для: sim5   (18.06.2008 в 09:02)
 

Проблема в том что javascript должен заново грузить страницу на которой есть модуль календаря (index.php). Если страница обновляется то и должно происходить обновление до текущего месяца. Обновление происходит но при этом месяц не изменяется до текущего, а я не могу понять почему.
Ну если это можно сделать при помощи сессий, Вы ни скаежете каким участком кода?

   
 
 автор: sim5   (18.06.2008 в 09:39)   письмо автору
 
   для: pautina   (18.06.2008 в 09:15)
 

Я вам говорил о JS-версии календаря, у вас бы не было проблем с F5. А данный JS сценарий вам не поможет. Вам нужно просто осуществлять переход внутри страницы, после получения запроса, чтобы сбросить его параметры. А сессия, это в том случае, если бы надо было запомнить дату отличную от текущей.

   
 
 автор: pautina   (19.06.2008 в 09:51)   письмо автору
 
   для: sim5   (18.06.2008 в 09:39)
 

Вы ни могли бы указать ссылки на несколько вариантов JS календарей.

   
 
 автор: mihdan   (19.06.2008 в 13:06)   письмо автору
 
   для: pautina   (19.06.2008 в 09:51)
 

Точно на уровне ДНК ))) Ведь есть google )))

>Вы ни могли бы указать ссылки на несколько вариантов JS календарей.
http://www.webmakerslounge.com/html/dhtml-javascript-calendar/

   
 
 автор: pautina   (20.06.2008 в 08:54)   письмо автору
 
   для: mihdan   (19.06.2008 в 13:06)
 

Выражение типа ДНК как то не очень помогает решить вопрос.
Мой календарь мне понравился больше, жаль конечно, что с обновлением для него ни получилось разобратся.

   
 
 автор: sim5   (20.06.2008 в 09:02)   письмо автору
 
   для: pautina   (20.06.2008 в 08:54)
 

Нет смысла (мне так кажется) делать "декоративный" календарь на РНР, тем более на JS их много, причем уже симпатичных (просто нужно поискать). Подключаемый JS календарь будет учитывать временную зону пользователя автоматически. Сменить стиль JS календаря, это так же просто, как написать echo <td class=name> в РНР.
Что касается обновления (F5), то я вам уже говорил - переход внутри страницы.

   
 
 автор: pautina   (21.06.2008 в 09:39)   письмо автору
 
   для: sim5   (20.06.2008 в 09:02)
 

Большое Вам спасибо.

   
Rambler's Top100
вверх

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