За последние 24 часа нас посетил 23491 программист и 1558 роботов. Сейчас ищут 887 программистов ...

Не выводится сообщение при if - ложь.

Тема в разделе "PHP для новичков", создана пользователем SamyRed, 12 фев 2016.

  1. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Доброго времени суток, пршу помощи, не выводится сообщение при if - ложь. Если правда - всё нормально выводится.
    Вот код:
    Код (PHP):
    1. $banlist = mysql_query("SELECT * FROM `banlist` WHERE `name`='{$username}'");
    2.     while($row_banlist = mysql_fetch_assoc($banlist)){
    3.     if(mysql_num_rows($banlist)){
    4.         $is_baned.= "<div class='bgobj2'>Вы забанены на сервере <b>".$row_banlist["server"]."</b> администратором <b>".$row_banlist["nameadmin"]."</b> по причине \"<b><a href='/rules.html'>".$row_banlist["cause"]."</a></b>\" по <b>".date("d-m-Y H:i",$row_banlist["date_end"])."</b>. 
    5.         <input value='{$row_banlist["server"]}' type='hidden' name='pickup_ban_server'>
    6.         <input value='{$username}' type='hidden' name='pickup_ban_name'>
    7.         Разбан стоит <b>".$price_unban."</b> рублей. <br/><button class='buttonlk' name='unban'>Разбаниться</button><input type='hidden' name='unban_srv' value='{$row_banlist["server"]}'/></div>";
    8.     } else $is_baned = "<br/>Вы не забанены ни на одном сервере.";
    9.     } echo $is_baned;?>
     
  2. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    может проблема в случайно конкатенации в блоке истины?
     
  3. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Может, но в notepad++ всё выделяется нормально
     
  4. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    ну естественно он будет показывать нормально. синтаксис же не нарушен. нарушена лишь логика употребления оператора конкатенации. была бы иде - она может быть обратила внимание на может быть неинициализированную переменную и показала бы ворнинг на неё. но так-то всё корректно. за исключением самого использования конкатенации вместо простого присвоения.
     
  5. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Проверил конкатенацию, вроде, всё нормально.
    Если меняю знак .= на = ничего не меняется.
     
  6. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    да? чо серьезно что ли?

     
  7. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
     
  8. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    и потом - нафиг набивать в строку чтоб потом один раз показать? сразу в поток печатай. причем выходом из режима пхп.

    Добавлено спустя 1 минуту 27 секунд:
    ну правильно не меняется. у тебя при итерации результирующей таблицы не меняется кол-во строк в ней.
    вот мы плавно притекли к еще одному забавному моменту
     
  9. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Изменил код на такой:
    Код (PHP):
    1.                     <?php
    2.                     $banlist = mysql_query("SELECT * FROM `banlist` WHERE `name`='{$username}'");
    3.                     while($row_banlist = mysql_fetch_assoc($banlist)){
    4.                     if(mysql_num_rows($banlist)){
    5.                     echo "<div class='bgobj2'>Вы забанены на сервере <b>{$row_banlist["server"]}</b> администратором <b>{$row_banlist["nameadmin"]}</b> по причине \"<b><a href='/rules.html'>{$row_banlist["cause"]}</a></b>\" по <b>".date("d-m-Y H:i",$row_banlist["date_end"])."</b> 
    6.                         <input value='{$row_banlist["server"]}' type='hidden' name='pickup_ban_server'>
    7.                         <input value='{$username}' type='hidden' name='pickup_ban_name'>
    8.                         Разбан стоит <b>{$price_unban}</b> рублей. <br/><button class='buttonlk' name='unban'>Разбаниться</button><input type='hidden' name='unban_srv' value='{$row_banlist["server"]}'/></div>";
    9.                     } else echo "<br/>Вы не забанены ни на одном сервере.";
    10.                     }?>
    то же самое.

    Добавлено спустя 1 минуту 29 секунд:
    И даже так:
    Код (PHP):
    1. <?php
    2.                     $banlist = mysql_query("SELECT * FROM `banlist` WHERE `name`='{$username}'");
    3.                     if(mysql_num_rows($banlist)){
    4.                     while($row_banlist = mysql_fetch_assoc($banlist)){
    5.                     echo "<div class='bgobj2'>Вы забанены на сервере <b>{$row_banlist["server"]}</b> администратором <b>{$row_banlist["nameadmin"]}</b> по причине \"<b><a href='/rules.html'>{$row_banlist["cause"]}</a></b>\" по <b>".date("d-m-Y H:i",$row_banlist["date_end"])."</b> 
    6.                         <input value='{$row_banlist["server"]}' type='hidden' name='pickup_ban_server'>
    7.                         <input value='{$username}' type='hidden' name='pickup_ban_name'>
    8.                         Разбан стоит <b>{$price_unban}</b> рублей. <br/><button class='buttonlk' name='unban'>Разбаниться</button><input type='hidden' name='unban_srv' value='{$row_banlist["server"]}'/></div>";
    9.                     }
    10.                     } else echo "<br/>Вы не забанены ни на одном сервере.";?>
    Добавлено спустя 1 минуту 44 секунды:
    Прошу прощения, при втором варианте всё работает верно. Спасибо за помощ, извините за потраченое время.
     
  10. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    да ничего страшного. просто будь внимательнее