Нужна помощь! добавление пользователей во множественное поле

Все вопросы/проблемы по установке и использовании.
Аватара пользователя
alcompstudio
Спонсор
Спонсор
Сообщения: 1710
Зарегистрирован: 03 янв 2016, 20:42
Имя: Александр Афанасьев
Откуда: г. Славянск, Донецкая обл.
Организация: Alcomp

Нужна помощь! добавление пользователей во множественное поле

Сообщение alcompstudio »

Добрый день!

Есть структура:

Задания
- Работа по заданию


В сущности Задания - есть поле с выпадающим списком со множественным выбором Пользователи

В сущности Работа по заданию - поле - Пользователи.

Нужно периодически добавлять нового пользователя в поле родительской сущности Задания - в то поле со множественным выбором.

Т.е., например, есть уже несколько пользователей в поле сущности Задания. Добавилась запись в дочернюю сущность Работа по заданию, и я оттуда (из поля Пользователи, может через кнопку автоматизации) - "скопировал"/"перенес" нового пользователя в поле со множественным выбором. И он "присоединился" к уже имеющимся другим пользователям. Процесс именно НЕ в перезаписи имеющихся значений, а именно - добавление (есть, например, 3 пользователя, я нажал кнопку в записи Работа по заданию - и добавился еще один пользователь в выпадающий список - уже стало 4 пользователя).

Сейчас все вручную нужно выбирать, но вот можно ли как-то по такому принципу сделать, может JS скрипт какой-то, или через поле Ajax запрос? Было ли у кого подобное?
believe
Инвестор
Инвестор
Сообщения: 478
Зарегистрирован: 09 янв 2020, 11:49
Имя: Владимир
Откуда: Тверь
Организация: ООО "ВебСофт"

Re: Нужна помощь! добавление пользователей во множественное поле

Сообщение believe »

Как системе понять какого именно пользователя нужно добавить ?
Аватара пользователя
alcompstudio
Спонсор
Спонсор
Сообщения: 1710
Зарегистрирован: 03 янв 2016, 20:42
Имя: Александр Афанасьев
Откуда: г. Славянск, Донецкая обл.
Организация: Alcomp

Re: Нужна помощь! добавление пользователей во множественное поле

Сообщение alcompstudio »

Как системе понять какого именно пользователя нужно добавить ?
Пользователь известен уже, т.к. в записи Работа по заданию есть поле Пользователи (выпадающий список - НЕ множественный выбор, а именно один пользователь), он там уже есть. В этой же записи есть кнопка (например, "Присоединить пользователя к Заданию"). Нажимаем кнопку, пользователь, который "висит" в данном поле - "полетел" в общую "кучу" пользователей, которые находятся в записи родительской сущности Задания - в поле Пользователи со множественным выбором, и добавился к имеющимся.

Хотя и если даже поле со множественным выбором в сущности Работа - значит добавляем всех пользователей, которые там висят к общему списку в поле Пользователи сущности Задания. Т.е. суть добавить всех кто есть в поле - не перезаписать, как сейчас происходит, а именно добавить. Если автоматизация производится для нескольких записей сразу - значить выбрать со всех отмеченных записей всех-всех пользователей - и добавить их в одно поле.

Как-то так примерно.
Аватара пользователя
alcompstudio
Спонсор
Спонсор
Сообщения: 1710
Зарегистрирован: 03 янв 2016, 20:42
Имя: Александр Афанасьев
Откуда: г. Славянск, Донецкая обл.
Организация: Alcomp

Re: Нужна помощь! добавление пользователей во множественное поле

Сообщение alcompstudio »

Еще уточнение небольшое

Пользователь изначально должен быть в системе, т.е. мы его НЕ создаем как нового, просто выбираем в запись из имеющихся пользователей, так сказать, подключаем к заданию, где есть другие подключенные пользователи, из поля другой (дочерней) записи.
http://prntscr.com/11wxxwg

Я нашел (вроде как) что-то подобное тут https://progi.pro/dobavlenie-znacheniy- ... 2-11332069, но в силу моих скудных познаний в программировании, не знаю как это оформить (если вообще данный способ сможет помочь). Может кто-то поможет написать код, думаю, пригодится еще кому-то.

Суть вообще моего пожелания: Человек подает заявку на участие в Проекте - а менеджер проекта его подключает в Проект, добавляя к имеющимся другим участникам (которые внесены в поле со множественным выбором) - без "лишних" телодвижений поиска среди множества пользователей в выпадающем списке.

UPD. А еще лучше, чтобы данное добавление делалось в "фоне" путем добавления в БД нового значения (через UPDATE, например, или как там правильно сделать, чтобы произошло добавление нового - дополнительного значения к уже имеющимся в списке в поле БД).
Последний раз редактировалось alcompstudio 23 апр 2021, 11:35, всего редактировалось 1 раз.
Аватара пользователя
alcompstudio
Спонсор
Спонсор
Сообщения: 1710
Зарегистрирован: 03 янв 2016, 20:42
Имя: Александр Афанасьев
Откуда: г. Славянск, Донецкая обл.
Организация: Alcomp

Re: Нужна помощь! добавление пользователей во множественное поле

Сообщение alcompstudio »

Кстати, заметил одну проблему (может, конечно, не предусмотрено, но все же...) - в автоматизации, где есть действие с изменением полей родительской записи http://prntscr.com/11wyc8q - если поле заполнено в той родительской записи, то почему-то при ручном режиме ввода данных - не выводятся уже заполненные значения (поле пустое). В частности, в моем примере - в родительской записи в поле Пользователи есть значения http://prntscr.com/11wygb7

Но если я выполняю процесс автоматизации, с применением данного действия из дочерней записи, то в форме, где есть ручной ввод в родительскую запись, введенных значений нет - поле пустое http://prntscr.com/11wyl8y (причем при разных опциях ручного ввода - http://prntscr.com/11wyjhl). Это так и должно быть, или же все-таки ошибка?
Аватара пользователя
alcompstudio
Спонсор
Спонсор
Сообщения: 1710
Зарегистрирован: 03 янв 2016, 20:42
Имя: Александр Афанасьев
Откуда: г. Славянск, Донецкая обл.
Организация: Alcomp

Re: Нужна помощь! добавление пользователей во множественное поле

Сообщение alcompstudio »

В общем, сам спросил, сам ответил))

Реализовал через поле Ajax запрос - в т.ч. повесил на кнопку автоматизации. Теперь по нажатию пользователь "пополняет" поле - присоединяется к уже имеющимся пользователям.

Может кому пригодится образец кода:

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

$worker_query = db_query("select field_2064 from app_entity_27 where id='" . $_POST['parent_item_id'] . "'"); //запрос к род.сущности Задания - в поле Исполнители
$current_worker = [725]; // Берем значение из поля текущей сущности Этапы (Исполнитель - пользователь)
if($worker = db_fetch_array($worker_query))
  {
    $value = $worker['field_2064']; // Берем значение из запроса (Исполнители)
    $worker_query = db_query("update app_entity_27 set field_2064 = concat('$value', ',', '$current_worker') where id='" . $_POST['parent_item_id'] . "'"); // Обновляем родительскую сущность Задания - добавляя к имеющимся значениям новое значение из поля 725 - через запятую

  }
Также опытных специалистов (в частности Сергея - разработчика) прошу проанализировать код и порекомендовать оптимизацию, т.к. в силу небольших знаний в php+mysql - думаю я что-то лишнего там "накодировал" ).

Требования к выполнению данного кода - наличие формы (т.е. функционал реализуется частично в "фоновом" режиме), в которой должны быть поля "откуда" берется значение для его передачи (поле Исполнитель (Пользователь) - из текущей сущности Этапы), а также само поле Ajax запрос. Т.е. эти поля должны выводиться в самой форме.

Может кто подскажет как это реализовать, не выводя поля в форму - через подзапросы, я пока затрудняюсь как это сделать. Единственное, предполагаю, что нужно строить подзапрос для поиска нужного значения для записи сущности Исполнители, которая принадлежит к своей родительской записи сущности Этапы. Возможно как-то заменить переменную

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

$current_worker = [725];
- на нужный подзапрос. И тогда можно будет выполнять добавление пользователя - прописав код в поле PHP код, или же в том же поле Ajax запрос (они вроде идентично работают).
Аватара пользователя
alcompstudio
Спонсор
Спонсор
Сообщения: 1710
Зарегистрирован: 03 янв 2016, 20:42
Имя: Александр Афанасьев
Откуда: г. Славянск, Донецкая обл.
Организация: Alcomp

Re: Нужна помощь! добавление пользователей во множественное поле

Сообщение alcompstudio »

Да, все-таки "намудрил" - при пересохранении записи этот кусок кода

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

set field_2064 = concat('$value', ',', '$current_worker')
еще раз добавляет пользователя и он дублируется на странице записи. Но если зайти в форму - то дубля нет, там находится "один экземпляр" добавленного пользователя. Вероятно нужно прописать проверку на наличие добавляемого значения в списке - если оно уже присутствует, то не добавлять, если нет такого - добавляем. Прошу подсказки, как это сделать...
Аватара пользователя
alcompstudio
Спонсор
Спонсор
Сообщения: 1710
Зарегистрирован: 03 янв 2016, 20:42
Имя: Александр Афанасьев
Откуда: г. Славянск, Донецкая обл.
Организация: Alcomp

Re: Нужна помощь! добавление пользователей во множественное поле

Сообщение alcompstudio »

Некорректно работает мой код... ((

Получается без проверки на пустые поля - все равно пытается "запихнуть" нулевое значение в поле с пользователями, в результате чего выскакивает ошибка - при попытке редактировать запись в сущности Задание (т.е. там, где скриптом добавляется/должен добавляться пользователь)

http://prntscr.com/1252eba

Как правильно сформировать код, возможно не хватает еще также срабатывания скрипта на событие onsubmit (если я правильно понял) - то как это сделать? Чтобы код не срабатывал просто при открытии формы редактирования и сохранения (добавления) пустого значения в дочерней записи ? Нужна помощь...
Аватара пользователя
alcompstudio
Спонсор
Спонсор
Сообщения: 1710
Зарегистрирован: 03 янв 2016, 20:42
Имя: Александр Афанасьев
Откуда: г. Славянск, Донецкая обл.
Организация: Alcomp

Re: Нужна помощь! добавление пользователей во множественное поле

Сообщение alcompstudio »

alcompstudio писал(а): 27 апр 2021, 13:35 Некорректно работает мой код... ((

Получается без проверки на пустые поля - все равно пытается "запихнуть" нулевое значение в поле с пользователями, в результате чего выскакивает ошибка - при попытке редактировать запись в сущности Задание (т.е. там, где скриптом добавляется/должен добавляться пользователь)

http://prntscr.com/1252eba

Как правильно сформировать код, возможно не хватает еще также срабатывания скрипта на событие onsubmit (если я правильно понял) - то как это сделать? Чтобы код не срабатывал просто при открытии формы редактирования и сохранения (добавления) пустого значения в дочерней записи ? Нужна помощь...
Понемногу сам с собой общаюсь :D

В общем, кое-каким образом сделал проверку на пустые значения в обоих сущностях, сделал добавление в Задания одного (первого) значения, если там пусто и НЕ добавление пустого (нулевого) из Этапов, если в них пусто. Вот такой код получился, если будет у кого-то из экспертов возможность оптимизации (чувствую, намудрил с дублированием запросов) - буду рад помощи.

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

$worker_query = db_query("select field_2064 from app_entity_27 where id='" . $_POST['parent_item_id'] . "'"); //запрос к род.сущности Задания - в поле Исполнители
$current_worker = [725]; // Берем значение из поля текущей сущности Этапы (Исполнитель - пользователь)

if (!empty($current_worker)) { //Проверяем чтобы поле из сущности Этапы было не пустое

  if($worker = db_fetch_array($worker_query))
    {
      $value = $worker['field_2064']; // Берем значение из запроса (Исполнители)
      if (!empty($value)) { //Проверяем чтобы поле из сущности Задания было не пустое
      $worker_query = db_query("update app_entity_27 set field_2064 = concat('$value', ',', '$current_worker') where id='" . $_POST['parent_item_id'] . "'"); // Если не пустое, то Обновляем родительскую сущность Задания - добавляя к имеющимся значениям новое значение из поля 725 - через запятую
      }
     else { 
       $worker_query = db_query("update app_entity_27 set field_2064 = '$current_worker' where id='" . $_POST['parent_item_id'] . "'"); //Если пустое, то Обновляем родительскую сущность Задания - добавляя новое значение из поля 725 
         }
    }
  return false;
}
Далее буду пробовать (искать решение) - сделать выполнение данного кода по нажатию на кнопку отправки ("сохранение" в форме и/или "продолжение" - в форме автоматизации), т.е. чтобы не сразу выполнялся скрипт по открытию формы.
Аватара пользователя
alcompstudio
Спонсор
Спонсор
Сообщения: 1710
Зарегистрирован: 03 янв 2016, 20:42
Имя: Александр Афанасьев
Откуда: г. Славянск, Донецкая обл.
Организация: Alcomp

Re: Нужна помощь! добавление пользователей во множественное поле

Сообщение alcompstudio »

В общем, пока не удается сделать выполнение php кода на отправку формы, т.к. в системе изначально в данном поле выполнение настроено на открытие формы.

Было бы неплохо добавить опции в настройки (если такое технически возможно):

- выполнять php код при открытии формы
- выполнять php код при отправке формы (кнопка сохранить или Продолжить в форме автоматизации)
Ответить