• Объявления

    • dinox

      Закрытый раздел разработчиков   21.08.2017

      У нас на форуме существует закрытый раздел для разработчиков в котором мы обсуждаем нюансы работы на нашем форуме, в каталоге дополнений и другие моменты которые интересны в большинстве случаев только разработчикам. На данный момент существует лишь 2 условия для попадания:
      1. Наличие промодерированного дополнения в нашем каталоге  2. Отсуствие варезной деятельности 
      Если эти правила выполнены, пишите запрос @ArtemPitov на попадание в раздел разработчиков
L0ky

PHP Notice: Undefined variable

Рекомендуемые сообщения

L0ky    2

Здравствуйте, проблема возникла, на сайте  - https://tropickava.com.ua/ на главной, на третьей картинке, есть модуль "подписка на новости", после ввода туда адреса и нажатия на кнопку "отправить" в журнал ошибок падает такая вот строка:

PHP Notice: Undefined variable: description in /home/uh413434/domains/tropickava.com.ua/public_html/catalog/view/theme/theme658/template/module/tm_newsletter.tpl on line 4

которая ссылается на строку -  4:  <?php if ($description){?><p class="newsletter-description"><?php echo $description;?></p><?php }?>

Раздражает ппц как, чего оно ноет как исправить о_О ? 

Opencart 2.1.0.2

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Tom    1 931

Элементарно.Обратиться к автору темы у которого она куплена.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

L0ky    2
1 час назад, Tom сказал:

Элементарно.Обратиться к автору темы у которого она куплена.

молчит автор )

а ошибка не элементарная - типа где-то запятая пропущена?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

chukcha    837

ошибка элементарная

ifset($description)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

interpol    0

Покажи код который на 3 строчке

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

interpol    0

Точнее покажи две сверху и две снизу и я скажу тебе точный ответ с вероятностью 95 %

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

L0ky    2
5 минут назад, interpol сказал:

Точнее покажи две сверху и две снизу и я скажу тебе точный ответ с вероятностью 95 %

<div id="tm-newsletter" class="box newsletter">
    <div class="box-heading"><h2><?php echo $heading_title; ?></h2></div>
    <div class="box-content">
        <?php if ($description){?><p class="newsletter-description"><?php echo $description;?></p><?php }?>
        <form method="post" enctype="multipart/form-data" id="tm-newsletter-form">
            <div class="tm-login-form">                
                <input type="text" name="tm_newsletter_email" value="" placeholder="<?php echo $entry_mail; ?>" id="input-tm-newsletter-email" class="form-control"/>
                <button type="submit" id="tm-newsletter-button" class="dropdown-btn"><?php echo $button_subscribe; ?></button>
                <label class="control-label" for="input-tm-newsletter-email"></label>
            </div>
            <span id="tm-newsletter_error" class="newsletter-error"></span>
            <span id="tm-newsletter_success" class="newsletter-success"></span>
        </form>

    </div>
</div>

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

L0ky    2
41 минуту назад, chukcha сказал:

ошибка элементарная

ifset($description)

 

когда if заменил на ifset то главная вообще не грузится, в консоли выпадает - https://tropickava.com.ua/ 500 (Internal Server Error)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

interpol    0

Ты пытаешься вызвать не существующую переменную, обработай ее isset()
<?php if (isset($description)){?><p class="newsletter-description"><?php echo $description;?></p><?php }?>

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

L0ky    2
8 минут назад, interpol сказал:

Ты пытаешься вызвать не существующую переменную, обработай ее isset()
<?php if (isset($description)){?><p class="newsletter-description"><?php echo $description;?></p><?php }?>

спасибо, ошибка исчезла, счастье есть :)

вообще шаблон от templatemonster просто пестрит такими вещами, а этот модуль вообще гениален - они сделали модуль который собирает е-мейлы, при этом эти адреса тупо нигде не выводятся в админке, их можно посмотреть только в phpmyadmin, и почистить например тоже только там - ну не идиоты? Еще не факт что по ним хоть какие-то письма рассылаются :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

chukcha    837
17 минут назад, L0ky сказал:

когда if заменил на ifset

иии..

google в помощь

ifset php - выпадет все что касается isset

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

florapraktik    77
1 час назад, chukcha сказал:

ошибка элементарная

Можно подробней?

Что возвращает  if ($description), если переменная $description у нас Undefined ?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

interpol    0
8 минут назад, chukcha сказал:

иии..

google в помощь

ifset php - выпадет все что касается isset

 

Я не видел такого не разу за столько, может не те книги читаю или не ту травку курю, и проверил на php 5.6 не работает и гугл не дает результат

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

florapraktik    77
4 минуты назад, interpol сказал:

Я не видел такого не разу за столько, может не те книги читаю или не ту травку курю, и проверил на php 5.6 не работает и гугл не дает результат

Опечатка. И гугл это сразу понял.:-D И даже подсказал, как правильно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

interpol    0
4 минуты назад, florapraktik сказал:

Опечатка. И гугл это сразу понял.:-D И даже подсказал, как правильно.

Не понял

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

florapraktik    77
1 минуту назад, interpol сказал:

Не понял

:-D

Не знаю, как у Вас, но когда я вставляю в строку поиска  ifset, то первая же подсказка от гугул это  isset php = нет никакого ifse - это опечатка.

Если настоять и спросить  ifset php, то гугл не сдаётся и показывает результаты для isset php

Не знаю, я сразу понял, что это опечатка.:-)

 

А Вы не скажите, что возвращает  if ($description) ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

chukcha    837

что-то там должно быть

Но что там, нужно смотреть по коду, а не гадать

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

interpol    0

С этим я согласен, но я делал на точный результат и видел код с использованием ifset в функции.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

chukcha    837

Судя по всему выдернули какой-нибудь код подписки, где было еще одно поле

В шаблоне его удалили, а в контроллере забыли, вот и вся радость

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

interpol    0
1 минуту назад, chukcha сказал:

Судя по всему выдернули какой-нибудь код подписки, где было еще одно поле

В шаблоне его удалили, а в контроллере забыли, вот и вся радость

Чуть подправлю, в контроллере удалили а в шаблоне забыли так будет думаю правильней.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

L0ky    2

А сильно геморрно вывести собранные емейлы где-то в админке?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

interpol    0

Нет, могу написать модуль для этого за плату если интересно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

florapraktik    77
1 час назад, chukcha сказал:

что-то там должно быть

Но что там, нужно смотреть по коду, а не гадать

Вопрос другой.

если не сложно:

<?php
    if ($var) {
                  ?> <p>$var существует</p>  <?php
    } else {
              ?> <p>$var НЕ существует</p>  <?php
      }
?>

Если переменная $var не определена, то код выдаёт <p>$var НЕ существует</p>

И не выпадает никаких ошибок или варнингов.

Т.е., if ($var) возвращает false если переменная $var не определена. И всё. И это не ошибка. Это допустимая проверка на существование. У меня такая конструкция прокатывает.

Сделал вот так:

<?php
    $var = 'описание';
    if ($var) {  echo $var;  }
?>

на выходе получил  описание

Сделал вот так:

<?php
    if ($var) {  echo $var;  }
?>

На выходе получил ничего. Совсем ничего. Никаких варнингов или ошибок.

То есть if ($var) по сути = if (isset($var)) 

Или нет? Я в растерянности....

 

Изменено пользователем Skunk
[code]

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Skunk    84

А теперь вот так:

<?php if (isset($var)) {echo $var;} ?>

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

florapraktik    77
14 минут назад, Skunk сказал:

А теперь вот так:


<?php if (isset($var)) {echo $var;} ?>

Дык, пробовал - аналогично.

<?php
    $var = 'описание';
    if (isset($var)) {  echo $var;  }
?>

Выдаёт описание

 

<?php
    if (isset($var)) {  echo $var;  }
?>

не выдаёт ничего.

Поведение if (isset($var)) полностью аналогично поведению  if ($var) - в обоих случаях при отсутствии $var просто html документ идёт дальше. и всё.

 

Кажется, понял (или нет):

<?php
     echo $var; 
?>

$var не существует, но один фик никаких варнингов. Наверное, настройки какие-то, да?

Изменено пользователем florapraktik

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу