За последние 24 часа нас посетили 17879 программистов и 1653 робота. Сейчас ищут 892 программиста ...

Как можно упростить код?

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

  1. job3507

    job3507 Новичок

    С нами с:
    31 дек 2013
    Сообщения:
    16
    Симпатии:
    0
    Доброе время суток, уважаемые форумчане!
    Помогите пожалуйста упростить код, который я (новичок и чайник) написал:
    Код (Text):
    1. <?php
    2. $nowDay = date ('d');
    3. $nowMonth = date ('n');
    4. $start_day = "31";
    5. $end_day = "1";
    6. $start_month = "12";
    7. $end_month = "1";
    8. if ($nowMonth >= $start_month)
    9. {
    10.     if ($nowMonth <= $end_month)
    11.     {
    12.         echo "Ошибка 2";
    13.     }
    14.     else
    15.     {
    16.         if ($nowDay >= $start_day)
    17.         {
    18.             if ($nowDay <= $end_day)
    19.             {
    20.                 echo "Конец мероприятия";
    21.             }
    22.             else
    23.             {
    24.                 echo "Сообщение";
    25.             }
    26.         }
    27.         else
    28.         {
    29.             echo "Ошибка 3";
    30.         }
    31.     }
    32. }
    33. else
    34. {
    35.     echo "Ошибка 1";
    36. }
    37. ?>
    Суть тут проста, нужно выводить сообщение с определенного дня и месяца по другие дни другого месяца.
    Если есть другие варианты кода, готов выслушать Ваши предложения.
    Заранее спасибо!
     
  2. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    Код (PHP):
    1. $now  = time();
    2. $start= mktime(0 ,0 ,0 ,12,31,2013); // точка начала мероприятия
    3. $end  = mktime(23,59,59,1 ,1 ,2014); // точка окончания мероприятия
    4.  
    5. if ($now<$start) { 
    6.  echo 'время ДО мероприятия';
    7. } else if ($now>$end) { 
    8.  echo 'время ПОСЛЕ мероприятия'; 
    9. } else { 
    10.  echo 'Сообщение! Мероприятие в процессе!'; 
    11. }
     
  3. job3507

    job3507 Новичок

    С нами с:
    31 дек 2013
    Сообщения:
    16
    Симпатии:
    0
    runcore, спасибо!
    Но мне не очень удобно через mktime (). Есть ли еще варианты, но без привязки к году?
    Заранее спасибо! И с наступающим Вас!
     
  4. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    Код (PHP):
    1. $start_md = '1231'; // mmdd
    2. $end_md   = '0101'; // mmdd
    3. //-------------------------
    4. $now  = date("Ymd");
    5. $start = date('Y').$start_md; // yyyymmdd
    6. $end   = date('Y').$end_md;   // yyyymmdd
    7. if ($start>$end) $end += 10000; // yyy(y+1)mmdd
    8. if ($now<$start) {
    9.   echo 'время ДО мероприятия';
    10. } else if ($now>$end) {
    11.   echo 'время ПОСЛЕ мероприятия';
    12. } else {
    13.   echo 'Сообщение! Мероприятие в процессе!';
    14. } 
     
  5. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    Что значит "без привязки к году"? В дате есть год. Ты хочешь повторяющееся событие запрограммировать?
     
  6. job3507

    job3507 Новичок

    С нами с:
    31 дек 2013
    Сообщения:
    16
    Симпатии:
    0
    artoodetoo, да Вы правильно поняли суть.
    То есть этим скриптом будет выводиться информация о государственных праздниках (23 февраля, 8 марта и т.д. и т.п.).
    Так как проект заказали люди, которые вообще ничего не понимают в программирование, то хотелось бы облегчить себе жизнь и не лезть постоянно править код.
    runcore, спасибо за интересный вариант!