За последние 24 часа нас посетили 24614 программистов и 1695 роботов. Сейчас ищут 816 программистов ...

Проверьте код

Тема в разделе "PHP для новичков", создана пользователем q0b3rMAN, 9 окт 2017.

  1. q0b3rMAN

    q0b3rMAN Активный пользователь

    С нами с:
    11 июн 2011
    Сообщения:
    142
    Симпатии:
    0
    Специалисты
    Проверьте пожалуйста, правильный ли это код, и не возникнет ли ошибки
    Код (Text):
    1.                             // Подписка
    2.                             $q = mysqli_query($base, "SELECT end_date FROM follows WHERE user_login='".$data['user_login']."'");
    3.                             $foll = mysqli_fetch_array($q);
    4.                             // if (isset($foll['end_date'])) { $yfoll = 1; } else { $yfoll = 0; }
    5.                            
    6.                             // Разбитие даты d.m.Y
    7.                             $date = $foll['end_date'];  
    8.                             $udate = date("d.m.Y");
    9.  
    10.                             $un_date = date_parse_from_format("d.m.Y", $udate); // Время сейчас              
    11.                             $n_date = date_parse_from_format("d.m.Y", $date); // Время до которого действует
    12.  
    13.                             $stop = 0;
    14.  
    15.                             // Проверка подписки
    16.                             if ($un_date['year'] > $n_date['year']) {
    17.                               $stop = 1;
    18.                             }
    19.                             else {
    20.                               if ($un_date['month'] > $n_date['month']) {
    21.                                 $stop = 1;
    22.                               }
    23.                               else {
    24.                                 if ($un_date['day'] >= $n_date['day']) {
    25.                                   $stop = 1;
    26.                                 }
    27.                               }
    28.                             }
    29.  
    30.                             if ($stop == 1) {
    31.                               echo 'Подписка кончилась';
    32.                             }
    Замысел в том, что надо проверить действие "платной" подписки. Если сейчас дата больше чем дата в базе, выставить $stop = 1. Да и вообще, будьте добры, подскажите, как улучшить этот кусок кода
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.866
    Симпатии:
    753
    Адрес:
    Татарстан
    ппц...
    Что мешает в самом запросе добавить
    Код (Text):
    1. SELECT IF(end_date>NOW(),1,0 AS subscribe ....
    и потом без долгих и непонятных сравнений просто выводить данный флаг или деоать что нужно
     
  3. ZlobnyKolob

    ZlobnyKolob Активный пользователь

    С нами с:
    25 окт 2016
    Сообщения:
    184
    Симпатии:
    10
    отсутствие знаний sql

    Почитай sql и все будет намного проще)
    Желательно уже mysqli
     
  4. q0b3rMAN

    q0b3rMAN Активный пользователь

    С нами с:
    11 июн 2011
    Сообщения:
    142
    Симпатии:
    0
    отсутствие знаний sql +
    вот в инете решение себе нашел ,всем спасибо
    Код (Text):
    1.                             // Время до конца подписки
    2.                             $met = '10.10.2017';
    3.                             $metTS = strtotime($met);
    4.                             // echo "Вы ввели время - " . strftime("%d-%m-%Y", $metTS) . "<br />";
    5.                             // echo "Текущее время - " . strftime("%d-%m-%Y") . "<br />";
    6.                             $sub = $metTS - time();
    7.                             if ($sub < 0) {
    8.                               $ban = 1; // Подписка закончилась
    9.                               echo 'кончилась';
    10.                             } elseif ($sub > 0) {
    11.                               $ban = 0; // Подписка действует
    12.                               echo 'действует';
    13.                             } else {
    14.                               $ban = 2; // Подписка заканчивается сегодня
    15.                               echo 'сегодня!';
    16.                             }
    17.                             $sub = abs($sub);
    18.                             $days = (int)($sub / (24*60*60));
    19.                             $hours = (int)(($sub - $days * 24 * 60 * 60) / (60*60));
    20.                             $min = (int)(($sub - $days * 24 * 60 *60 - $hours * 60 * 60) / 60);
    21.                             $sec = $sub - $days * 24 * 60 *60 - $hours * 60 * 60 - $min * 60;
    22.                             echo "<br/>осталось $days<br />\n";
     
  5. ZlobnyKolob

    ZlobnyKolob Активный пользователь

    С нами с:
    25 окт 2016
    Сообщения:
    184
    Симпатии:
    10
    почему поиск решения, а не знаний для решения
     
  6. q0b3rMAN

    q0b3rMAN Активный пользователь

    С нами с:
    11 июн 2011
    Сообщения:
    142
    Симпатии:
    0
    потому что нет необходимости в изучении данного языка программирования
     
  7. ZlobnyKolob

    ZlobnyKolob Активный пользователь

    С нами с:
    25 окт 2016
    Сообщения:
    184
    Симпатии:
    10
    ;)
     
  8. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.866
    Симпатии:
    753
    Адрес:
    Татарстан
    скобочку забыл... а так - если автор хочет долго нудно и нерационально - кто ж ему запретит