Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Календарик
Форумы портала PHP.SU » » Вопросы новичков » Календарик

Страниц (1): [1]
 

1. romanov - 18 Декабря, 2011 - 20:06:42 - перейти к сообщению
Всем привет.

Я вывожу календарь 14 дней начиная с текущей вот таким образом:

CODE (php):
скопировать код в буфер обмена
  1. if (!isset($_POST["nextDate"])&& !isset($_POST["prevDate"])):
  2.  
  3.         for ($i=0,$_SESSION['nextDat']=0; $i<=13; $i++,$_SESSION['nextDat'] +=  86400 ){
  4.                
  5.                 echo "<TD>";
  6.                
  7.                 echo strftime("%d-%B<br>%Y год",time()+$_SESSION['nextDat']);
  8.                
  9.                 echo "</TD>";
  10.         }
  11. endif;


Мне надо две кнопки которые листаю календарь вперед и назад с частотой 1 день, я написал что-то подобное но это не совсем корректно работает:

CODE (php):
скопировать код в буфер обмена
  1. if (isset($_POST["nextDate"])):
  2.    
  3.  
  4.  
  5.         $_SESSION['memoryDate'] = time() ;
  6.  
  7.         $_SESSION['memoryDate'] +=86400;
  8.        
  9.         $_SESSION['startDat'] =  $_SESSION['memoryDate'];
  10.         for ($i=0; $i<=13; $i++,$_SESSION['startDat'] +=  86400 ){
  11.                
  12.                 echo "<TD>";
  13.                
  14.                 echo strftime("%d-%B<br>%Y год",$_SESSION['startDat']);
  15.                
  16.                 echo "</TD>";
  17.         }
  18. endif;


Подскажите как мне решить эту проблему.
2. Okula - 18 Декабря, 2011 - 21:36:47 - перейти к сообщению
Посмотри в сторону интерфейса класса DateTime намного проще будет организовать.
Вот пример небольшой: в цикле будет прибавлятся по одному дню:
PHP:
скопировать код в буфер обмена
  1. $date = new DateTime;
  2. $i = 0;
  3. while($i<10) {
  4.     echo $date->format('d-m-Y')."<br />";
  5.     $date->modify('+1 day');
  6.     $i++;
  7. }

Результат работы скрипта:
CODE (htmlphp):
скопировать код в буфер обмена
  1. 19-12-2011
  2. 20-12-2011
  3. 21-12-2011
  4. 22-12-2011
  5. 23-12-2011
  6. 24-12-2011
  7. 25-12-2011
  8. 26-12-2011
  9. 27-12-2011
  10. 28-12-2011
3. romanov - 18 Декабря, 2011 - 21:42:35 - перейти к сообщению
То что вы написали я уже сделал проблема не в этом, а в том чтобы добавить кнопки которые листают календарь с частотой 1 день
4. Okula - 18 Декабря, 2011 - 23:14:42 - перейти к сообщению
Что-то не нашёл никаких проблемм, всё же элементарно, головой просто поработать немного нужно:
PHP:
скопировать код в буфер обмена
  1. $dat = !empty($_GET['dat']) ? $_GET['dat'] : date('d-m-Y');
  2. $act = !empty($_GET['act']) ? $_GET['act'] : FALSE;
  3.  
  4. $date = new DateTime($dat);
  5.  
  6. if($act == 'p') {
  7.     $date->modify('+1 day');
  8.     $rdate = $date->format('d-m-Y');
  9. } elseif($act == 'm') {
  10.     $date->modify('-1 day');
  11.     $rdate = $date->format('d-m-Y');
  12. } else {
  13.     $rdate = $date->format('d-m-Y');
  14. }
  15.  
  16. echo '<a href="?act=m&dat='.$rdate.'">минус день</a> || '.$rdate.' || <a href="?act=p&dat='.$rdate.'">плюс день</a>';

Код рабочий, всё проверил.

 

Powered by ExBB FM 1.0 RC1