Запись ответа API в поле

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

Запись ответа API в поле

Сообщение Andres »

Подскажите кто-нибудь:
После создания пользователя по API приходит ответ

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

Array ( [status] => success [data] => Array ( [id] => 42 ) )
Как этот id записать в поле текущей записи?

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

if($result)
{
  $result = json_decode($result,true);

  print_r($result);
}
Пробую:

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

db_query("update app_entity_1 set field_257=$result where id={$item_id}");
И много разных вариантов, например:

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

$element = $result['id'];
  db_query("update app_entity_1 set field_257={$element} where id={$item_id}");
но безрезультатно...
Аватара пользователя
Antonyous99
Сообщения: 587
Зарегистрирован: 18 авг 2019, 09:22
Имя: Антон Владимирович
Откуда: Санкт-Петербург
Организация: ООО "РИКОМ-Сервис"
Контактная информация:

Re: Запись ответа API в поле

Сообщение Antonyous99 »

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

db_perform('app_entity_1,['field_257'=>$result['id']],'update',"id=[id]");
ПУЛЬТ УПРАВЛЕНИЯ БИЗНЕСОМ
ERP/CRM "под ключ"
Аватара пользователя
Andres
Сообщения: 70
Зарегистрирован: 09 окт 2016, 01:44
Имя: Andres Orumets
Откуда: Estonia, Maardu

Re: Запись ответа API в поле

Сообщение Andres »

Antonyous99 писал(а): 30 апр 2024, 02:59

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

db_perform('app_entity_1,['field_257'=>$result['id']],'update',"id=[id]");
Спасибо за совет, но не работает...
Сначала:
Ошибка: Процесс: #1, Действия для процесса: #1 - syntax error, unexpected identifier "field_257", expecting ")" on line 50
Попробовал убрать апострафы с "field_257", тогда ругается на "id":
Ошибка: Процесс: #1, Действия для процесса: #1 - syntax error, unexpected identifier "id", expecting ")" on line 50
Сидим, колупаем с Copilot вдвоем... :D
Аватара пользователя
Antonyous99
Сообщения: 587
Зарегистрирован: 18 авг 2019, 09:22
Имя: Антон Владимирович
Откуда: Санкт-Петербург
Организация: ООО "РИКОМ-Сервис"
Контактная информация:

Re: Запись ответа API в поле

Сообщение Antonyous99 »

Кавычку забыл, поправил.

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

db_perform('app_entity_1',['field_257'=>$result['id']],'update',"id=[id]");
ПУЛЬТ УПРАВЛЕНИЯ БИЗНЕСОМ
ERP/CRM "под ключ"
Аватара пользователя
Andres
Сообщения: 70
Зарегистрирован: 09 окт 2016, 01:44
Имя: Andres Orumets
Откуда: Estonia, Maardu

Re: Запись ответа API в поле

Сообщение Andres »

Кавычку я тоже нашел, но не работает всеравно... Ругается на необъявленный ключ:

Warning: Undefined array key "id" in /site.ru/plugins/ext/classes/processes/processes.php(1834) : eval()'d code on line 41

Warning: Cannot modify header information - headers already sent by (output started at /site.ru/plugins/ext/classes/processes/processes.php(1834) : eval()'d code:43) in /site.ru/includes/functions/urls.php on line 26

Может не работает в контексте всего кода?

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

$bind_id=[id];
$firstname=[7];
$lastname=[8];
$username=[12];
$usermail=[9];
$items = array();
$items[] = array(
  'group_id' => 4, //4 - ID группы пользователя
  'firstname' => $firstname,
  'lastname' => $lastname,
  'username' => $username,
  'email' => $usermail,
  'password' => '',//Если не указан, будет сгенерирован автоматически.
  'field_255' => $bind_id,
);

$params = array(
  'key' => 'КЛЮЧ',
  'username' => 'ЛОГИН',
  'password' => 'ПАРОЛЬ',
  'action' => 'insert',
  'entity_id' => 1,
  'notify' =>false, //Будет отправлено уведомление пользователю.
  'login_url' => 'https://site.ru/index.php',
  'items' => $items,
);
 						                                    
$ch = curl_init('https://site.ru/api/rest.php');
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);			
$result = curl_exec($ch);
curl_close($ch);

                    //Пользователь создается, все в порядке

if($result)
{
  $result = json_decode($result,true);
  
  db_perform('app_entity_1',['field_257'=>$result['id']],'update',"id=[id]");

}
Copilot советовал:

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

if($result)
{
  $result = json_decode($result,true);
  
  if(isset($result['id'])) {
    $id = $result['id'];
  } else {
    echo "ID не найден в ответе";
  }
    db_perform('app_entity_1',['field_255'=>$result['id']],'update',"id=[id]");
  //print_r($result);
}
Таки, да, выводит "ID не найден в ответе"...
Аватара пользователя
Andres
Сообщения: 70
Зарегистрирован: 09 окт 2016, 01:44
Имя: Andres Orumets
Откуда: Estonia, Maardu

Re: Запись ответа API в поле

Сообщение Andres »

"print_r($result);" выводит:
ID не найден в ответеArray ( [status] => success [data] => Array ( [id] => 84 ) )
:shock: Как это "не найден success"? :shock: Массив вернулся, ОК. Но нет "id" - он же возвращается. Или нет?
Аватара пользователя
Fait
Инвестор
Инвестор
Сообщения: 786
Зарегистрирован: 19 ноя 2020, 17:46
Имя: Максим Балакшеев
Откуда: Россия, Златоуст
Организация: ИП Балакшеев Максим Георгиевич

Re: Запись ответа API в поле

Сообщение Fait »

Попробуйте вот этот код:

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

$bind_id=[id];
$firstname=[7];
$lastname=[8];
$username=[12];
$usermail=[9];
$items = array();
$items[] = array(
  'group_id' => 4, //4 - ID группы пользователя
  'firstname' => $firstname,
  'lastname' => $lastname,
  'username' => $username,
  'email' => $usermail,
  'password' => '',//Если не указан, будет сгенерирован автоматически.
  'field_255' => $bind_id,
);

$params = array(
  'key' => 'КЛЮЧ',
  'username' => 'ЛОГИН',
  'password' => 'ПАРОЛЬ',
  'action' => 'insert',
  'entity_id' => 1,
  'notify' =>false, //Будет отправлено уведомление пользователю.
  'login_url' => 'https://site.ru/index.php',
  'items' => $items,
);
 						                                    
$ch = curl_init('https://site.ru/api/rest.php');
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);			
$result = curl_exec($ch);
curl_close($ch);

                    //Пользователь создается, все в порядке

if($result)
{
  $result = json_decode($result,true);
  $upd = array( 'field_257' => $result['data'][0]['id'] );
  items::update_by_id(1,$bind_id,$upd);
}
Аватара пользователя
Fait
Инвестор
Инвестор
Сообщения: 786
Зарегистрирован: 19 ноя 2020, 17:46
Имя: Максим Балакшеев
Откуда: Россия, Златоуст
Организация: ИП Балакшеев Максим Георгиевич

Re: Запись ответа API в поле

Сообщение Fait »

Сработает либо предыдущий, либо вот этот код:

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

$bind_id=[id];
$firstname=[7];
$lastname=[8];
$username=[12];
$usermail=[9];
$items = array();
$items[] = array(
  'group_id' => 4, //4 - ID группы пользователя
  'firstname' => $firstname,
  'lastname' => $lastname,
  'username' => $username,
  'email' => $usermail,
  'password' => '',//Если не указан, будет сгенерирован автоматически.
  'field_255' => $bind_id,
);

$params = array(
  'key' => 'КЛЮЧ',
  'username' => 'ЛОГИН',
  'password' => 'ПАРОЛЬ',
  'action' => 'insert',
  'entity_id' => 1,
  'notify' =>false, //Будет отправлено уведомление пользователю.
  'login_url' => 'https://site.ru/index.php',
  'items' => $items,
);
 						                                    
$ch = curl_init('https://site.ru/api/rest.php');
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);			
$result = curl_exec($ch);
curl_close($ch);

                    //Пользователь создается, все в порядке

if($result)
{
  $result = json_decode($result,true);
  $upd = array( 'field_257' => $result['data']['id'] );
  items::update_by_id(1,$bind_id,$upd);
}
Аватара пользователя
Andres
Сообщения: 70
Зарегистрирован: 09 окт 2016, 01:44
Имя: Andres Orumets
Откуда: Estonia, Maardu

Re: Запись ответа API в поле

Сообщение Andres »

Да! Спасибо Fait!
Второй вариант работает.
Аватара пользователя
Fait
Инвестор
Инвестор
Сообщения: 786
Зарегистрирован: 19 ноя 2020, 17:46
Имя: Максим Балакшеев
Откуда: Россия, Златоуст
Организация: ИП Балакшеев Максим Георгиевич

Re: Запись ответа API в поле

Сообщение Fait »

Andres писал(а): 30 апр 2024, 21:18 Да! Спасибо Fait!
Второй вариант работает.
Рад помочь)
И ещё, постарайтесь вообще не использовать db_perform.
Эта функция не всё учитывает, и в рамках Руководителя работает криво.
Функция update_by_id работает гораздо надёжнее.
Ответить