Регистрация
Регистрируясь, вы подтверждаете свое согласие с соглашением об использовании персональных данных.
Восстановление пароля

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

08.03.2023, 17:54
Gvenv_nk
Наталья Комарова
Gvenv_nk

Зарегистрирован:
2011-11-07
Сообщений: 43

В форме обратной связи есть поле problem типа Множественный выбор, checkbox.
Значения берутся из списка Problems.
В админке в режиме редактирования вывожу значения из этого поля так:
<?= nc_array_to_string( $f_problem, $template )?>
Это работает.

Но! не понимаю, как передавать данные из этого массива в теле письма.
Мой вариант (не работающий):
Код:
".($f_problem > 0 ? "
Уточните проблему: ".$db->get_var("select Problems_Name from Classificator_Problems where Problems_ID = ".$f_problem."")."
":NULL)."


Зашла в тупик и прошу помощи зала))

Наталья Комарова
09.03.2023, 12:41
Баранов Александр
NetCat

Зарегистрирован:
2013-04-17
Сообщений: 32

Здравствуйте!

К сожалению, по вашим вводным данным не ясно, где именно находятся оба приведенных куска кода(список объектов, полное отображение, префикс , макет дизайна и т.д.), от контекста очень сильно зависит причина того, что может быт не так, например, переменные вида $f_ не будут доступны нигде, кроме списка и полного отображения и т.д. Кроме того, самый лучший совет разработчику при любых сложностях в понимании кода - использовать отладку и логирование, в вашем случае , в первую очередь, можно посоветовать залогировать(вывести на экран, в файл и т.д.) то, что получается в строке-теле вашего письма.

abaranov
09.03.2023, 18:02
Gvenv_nk
Наталья Комарова
Gvenv_nk

Зарегистрирован:
2011-11-07
Сообщений: 43

Александр, добрый день! Спасибо за ответ и простите за тупость, я уже совсем зарапортовалась с этой формой.
Уточню: речь идет о компоненте "Письмо с сайта". Первый кусок кода <?= nc_array_to_string( $f_problem, $template )?>
используется в панели редактирования шаблона (объект в списке). В системных настройках там прописан сам template. Это работает, т.е. в админку передаются все данные из формы.
Второй кусок
Код:
".($f_problem > 0 ? "
Уточните проблему: ".$db->get_var("select Problems_Name from Classificator_Problems where Problems_ID = ".$f_problem."")."
":NULL)."
используется в шаблонах действий (действие после добавления).
Причем таким же образом здесь же прописан вывод данных из другого поля типа Множественный выбор (select). И это работает, в письме данные из этого поля приходят. А вот с чекбоксами, когда надо передать несколько значений из списка, не получается.

Наталья Комарова
09.03.2023, 18:12
Баранов Александр
NetCat

Зарегистрирован:
2013-04-17
Сообщений: 32

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

abaranov
18.03.2023, 19:40
Игорь
Игорь Мишарин
Игорь

Зарегистрирован:
2011-11-20
Сообщений: 479

Дело в том, что выбранные значения хранятся в БД в таком виде - ,1,2,3,
В Вашем случае должен помочь такой вариант:
Код:

$db->get_results("select Problems_Name from Classificator_Problems where Problems_ID IN (". trim($f_problem, ',') ."")

Так Вы получите массив с "Проблемами". А дальше уже или "вручную" его разобрать или используя nc_array_to_string()

Stark
23.05.2023, 14:22
Gvenv_nk
Наталья Комарова
Gvenv_nk

Зарегистрирован:
2011-11-07
Сообщений: 43

Игорь, добрый день! Спасибо большое, буду пробовать.

Наталья Комарова
198 196 2023-05-23 14:22:22 15350
Описание проекта