[решено] Предупреждение "eval()'d code"

Все вопросы/проблемы по установке и использовании.
Ответить
Аватара пользователя
Andres
Сообщения: 89
Зарегистрирован: 09 окт 2016, 01:44
Имя: Andres Orumets
Откуда: Estonia, Maardu

[решено] Предупреждение "eval()'d code"

Сообщение Andres »

Добрый день,
При сохранении в процессе автоматизации получаю warning
Warning: Trying to access array offset on value of type null in /plugins/ext/classes/processes/processes.php(1834) : eval()'d code on line 13

Warning: Trying to access array offset on value of type null in /plugins/ext/classes/processes/processes.php(1834) : eval()'d code on line 16

Warning: Trying to access array offset on value of type null in /plugins/ext/classes/processes/processes.php(1834) : eval()'d code on line 19

Warning: Cannot modify header information - headers already sent by (output started at /plugins/ext/classes/processes/processes.php(1834) : eval()'d code:13) in /includes/functions/urls.php on line 26
Причем происходит это не со всеми записями... Глюк? В /plugins/ext/classes/processes/processes.php строки под такими номерами закомментированы.
Может кто-то встречался с подобным?
Последний раз редактировалось Andres 26 июл 2024, 17:24, всего редактировалось 1 раз.
Аватара пользователя
Andres
Сообщения: 89
Зарегистрирован: 09 окт 2016, 01:44
Имя: Andres Orumets
Откуда: Estonia, Maardu

Re: Предупреждение "eval()'d code"

Сообщение Andres »

В автоматизации изменения записи присутствует два действия:
1. "Изменить значения полей текущей записи" - здесь, среди прочего, вводятся поля адреса:
-Страна - сущность, выпадающий список (ajax)
--Регион - многоуровневый список сущностей
---Город - многоуровневый список сущностей
2. "Выполнить PHP скрипт" - здесь из введенных значений собирается строка полного адреса.

Warning выводится в случае, если не заполнены все три поля "Страна", "Регион" и "Город". Если хоть одно из них оставлено пустым, снова warning.
Как можно избежать такое? Вариант сделать поля обязательными - не вариант.
Код автоматизации:

Код: Выделить всё

$my_company_country_id=[626];
$my_company_state_id=[627];
$my_company_city_id=[628];
$my_company_town=[630];
$my_company_street=[631];
$my_company_building=[632];
$my_company_office=[633];
$my_company_zip=[629];
$full_address='';

//get country,state,city:
$info_query_country = db_query("select field_1102 from app_entity_80 where id=" . $my_company_country_id );
$info_country = db_fetch_array($info_query_country);
$my_company_country = $info_country['field_1102'];

$info_query_state = db_query("select field_1121 from app_entity_81 where id=" . $my_company_state_id );
$info_state = db_fetch_array($info_query_state);
$my_company_state = $info_state['field_1121'];

$info_query_city = db_query("select field_1131 from app_entity_82 where id=" . $my_company_city_id );
$info_city = db_fetch_array($info_query_city);
$my_company_city = $info_city['field_1131'];

//concat city:
if (!empty($my_company_city)) {
    $full_address=$my_company_city;
}
//concat town:
if (!empty($my_company_town)) {
    $full_address=$full_address.', '.$my_company_town;
}
//concat street:
if (!empty($my_company_street)) {
    $full_address=$full_address.', '.$my_company_street;
}
//concat building:
if (!empty($my_company_building)) {
    $full_address=$full_address.' '.$my_company_building;
}
//concat office:
if (!empty($my_company_office)) {
    $full_address=$full_address.'-'.$my_company_office;
}
//concat state:
if (!empty($my_company_state)) {
    $full_address=$full_address.', '.$my_company_state;
}
//concat zip:
if (!empty($my_company_zip)) {
    $full_address=$full_address.', '.$my_company_zip;
}
//concat country:
if (!empty($my_company_country)) {
    $full_address=$full_address.', '.$my_company_country;
}
//combine full address if not empty:
if (!empty($full_address)) {
db_query("update app_entity_45 set field_624='$full_address' where id={$item_id}");
}
Аватара пользователя
support
Техническая поддержка
Сообщения: 9166
Зарегистрирован: 19 окт 2014, 18:22
Имя: Харчишин Сергей
Откуда: Крым, Евпатория

Re: Предупреждение "eval()'d code"

Сообщение support »

Строку:

Код: Выделить всё

$my_company_country = $info_country['field_1102'];
Замените на:

Код: Выделить всё

$my_company_country = $info_country['field_1102']??'';
И по аналогии во всех остальных.

функция db_fetch_array вернула пустой результат, а вы проверки не поставили на пустоту, вот вам и ошибки.
Аватара пользователя
Andres
Сообщения: 89
Зарегистрирован: 09 окт 2016, 01:44
Имя: Andres Orumets
Откуда: Estonia, Maardu

Re: Предупреждение "eval()'d code"

Сообщение Andres »

Спасибо Сергей, работает как надо!
Ответить