За последние 24 часа нас посетили 17144 программиста и 1693 робота. Сейчас ищут 943 программиста ...

Навигация по месяцам. Нужная ваша оценка

Тема в разделе "Прочие вопросы по PHP", создана пользователем wymaroo, 26 окт 2014.

  1. wymaroo

    wymaroo Новичок

    С нами с:
    26 окт 2014
    Сообщения:
    1
    Симпатии:
    0
    Привет всем!

    Написал небольшой скрипт для постраничной навигации. Навигация по месяцам. Так месяц регистрации будет первым. Текущий месяц будет последним.

    Оцените написанный код. Прокомментировал для более простого понимания. Насколько такой код удачен для навигации, или может есть более быстрые скрипты или можно ее получить обращением к БД.

    Код (PHP):
    1. $reg_date = "2014-01-22"; // дата регистрации в системе MySQL DATE
    2. $time = date("Y-m-d", time()); // сегодняшняя дата
    3. $time = "2014-12-09"; // перезапись для проверки
    4.  
    5. // ШАГ 1 получить необходимые поля
    6. // ШАГ 2 проверка на разницу в годах/месяцах
    7. // ШАГ 2.1 - если года совпадают
    8. // ШАГ 2.2 - если текущий год следует за годом регистрации
    9. // ШАГ 2.3 - если между текущим годом и годом регистрации есть промежуточные
    10. function getPagination($reg_date, $time) {
    11.  //ШАГ 1
    12.  list($y_reg, $m_reg, $d_reg) = explode("-", $reg_date);
    13.  list($y_today, $m_today, $d_today) = explode("-", $time);
    14.  $pages = array();
    15.  // ШАГ 2.1
    16.  //если год регистрации и текущий совпадают
    17.  if ($y_reg === $y_today) {
    18.   for ($m=$m_reg; $m<=$m_today;$m++){ // текущий год
    19.     $pages[$y_today][] = $m;
    20.   }
    21.  }
    22.  // ШАГ 2.2
    23.  // если текущий год следует за годом регистрации (нет промещуточных)
    24.  elseif ($y_today - $y_reg === 1) { 
    25.   for ($m=1; $m<=$m_today;$m++){ // текущий год
    26.     $pages[$y_today][] = $m;
    27.   }
    28.   for ($m=$m_reg; $m<=12;$m++){ // год регистрации
    29.     $pages[$y_reg][] = $m;
    30.   }
    31.  }
    32.  // ШАГ 2.3
    33.  // если между текущим годом и годом регистрации есть промежуточные полные года
    34.  elseif ($y_today - $y_reg > 1 ){
    35.   for ($m=1; $m<=$m_today;$m++){ // текущий год
    36.     $pages[$y_today][] = $m;
    37.   }
    38.   $year = $y_today-1;
    39.   for ($y=$y_reg+1; $y<$y_today;$y++) { //промежуточные года.
    40.     for ($m=1; $m<=12;$m++){
    41.      $pages[$year][] = $m;
    42.     }
    43.     $year--;
    44.   }
    45.   for ($m=$m_reg; $m<=12;$m++){ // год регистрации
    46.     $pages[$y_reg][] = $m;
    47.   }
    48.  }
    49.   return $pages;
    50. } 
     
  2. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    "шаг 1" не комментируйте так. это раздражает.
     
  3. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Он по учебнику.