За последние 24 часа нас посетили 35019 программистов и 1734 робота. Сейчас ищут 803 программиста ...

Undefined variable

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

  1. exec

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

    С нами с:
    25 дек 2012
    Сообщения:
    34
    Симпатии:
    1
    PHP Notice: Undefined variable: nomer in /usr/local/www/apache24/data/search.php on line 138, referer: http://domen.ru/index.php

    В логах индейца такая ошибка. Причем все работает. Скрипт самописный.
    Код (Text):
    1. <?
    2. ...
    3. $res = $conn->query(....);
    4. $count = $res->rowCount();
    5. if ($count > 0) {
    6.     $result = $res->fetch();
    7.         $nomer = "";
    8.         for ($x=0; $x<$count; $x++) {
    9.                 $nomer = $nomer." ".$result['date']..... ";
    10.             $result = $res->fetch();    
    11.         }
    12. }
    13. ....
    14. ?>
    15.  
    16. <body>
    17. ...
    18. <font size="2"><?echo $nomer;?></font>
    19. </body>
    ругается на строку 138 она такая
    <font size="2"><?echo $nomer;?></font>

    вопрос почему?
     
  2. Walk

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

    С нами с:
    7 сен 2008
    Сообщения:
    452
    Симпатии:
    86
    Notice - это не ошибка, а просто предупреждение. По этому все работает.

    В целом на них можно и забить (но лучше конечно исправлять).
     
  3. Познающий php

    Познающий php Новичок

    С нами с:
    23 мар 2017
    Сообщения:
    381
    Симпатии:
    74
    Нотис потому что в конструкции переменная инициализируется. Вынеси её
     
    Maputo нравится это.
  4. exec

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

    С нами с:
    25 дек 2012
    Сообщения:
    34
    Симпатии:
    1
    Куда вынести ?
    Вот и хочу исправить, что бы не было предупреждений, а то весь лог забит!
    @ вариант не подходит.
     
  5. Познающий php

    Познающий php Новичок

    С нами с:
    23 мар 2017
    Сообщения:
    381
    Симпатии:
    74
    ну из конструкции if вынеси. Чтобы он не думал, что может возникнуть ситуация когда она окажется необъявленной
     
  6. exec

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

    С нами с:
    25 дек 2012
    Сообщения:
    34
    Симпатии:
    1
    хм, интересная логика. это так глубоко анализирует код интерпритатор ??
    у меня if обернут в try
    за try надо выносить ?

    просто если мы в if не попадаем, то и ничего не выводится. и ошибка логична.
    а если мы в if попадаем, то все объявляется и выводится. и ошибки-предупреждения быть не должно. это как я понимаю ..
     
  7. exec

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

    С нами с:
    25 дек 2012
    Сообщения:
    34
    Симпатии:
    1
    переместил в try
    все работает!
     
  8. Васяня

    Васяня Активный пользователь

    С нами с:
    2 окт 2016
    Сообщения:
    238
    Симпатии:
    32
    Адрес:
    Россия, Приморский край, г. Находка.
    Перемененные зарание нужно объявлять, до условий и прочего. Блоки try это не выход.
    Код (PHP):
    1. $var = null;
    2. if ($a > $b) {
    3.     $var = 1;
    4. }
     
  9. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.817
    Симпатии:
    1.333
    Адрес:
    Лень
    Этот код говнокод.
    Я про первый пост.
    --- Добавлено ---
    PHP:
    1. <?php
    2.  
    3. $res = $conn -> query( .... );
    4.  
    5. $gnom = [];
    6.  
    7. if ( $res -> rowCount() > 0 )
    8. {
    9.     $gnom = $res -> fetchAll( PDO::FETCH_FUNC, function ( ...$A )
    10.     {
    11.         return implode ( ' ', $A );
    12.     } );
    13. }
    14. ....
    15. ?>
    16. <body>
    17. ...
    18. <font size="2"><?= implode ( '<br>', $gnom ) ?></font>
    19. </body>