Перейти к содержимому


Получение данных о пользователе

$user[fio]

Сообщений в теме: 18

#1 ManFree

    Активный участник

  • Пользователи
  • PipPipPip
  • 107 сообщений

Отправлено 14 Март 2014 - 07:45

Для автоматического заполнения номера договора в нашей компании принято использовать первые буквы фамилии имени отчества сотрудника и дату.

Как сляпать конечный вариант я как нить догадаюсь, как получить сегодняшнюю дату - тоже не проблема.

НО вот с глобальными переменными что-то у меня не выходит.

Для начала пытаюсь хотя бы выдать алерт с фио текущего пользователя по изменению одного из полей код следующий


function onchange_{$one_field.id}()
{

/*var kkk = document.getElementById('value3440').value;   - возвращает ИД пользователя то есть цифру. и алерт с переменной kkk работает  */

mmm = $user['fio'];
alert (mmm);
}
addHandler(document.getElementById('value4000'), 'onchange', onchange_{$one_field.id});

Что делаю не так. насколько я понял из поисков по форумам, глобальные переменные доступны во всех вычислениях без дополнительного объявления.
Заранее спасибо

#2 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 14 Март 2014 - 08:31

Это не вычисление, а JavaScript. Вычисления пишутся на PHP, это другой язык и другая область переменных. В JS можно подставлять smarty-переменные:

function onchange_{$one_field.id}()
{

/*var kkk = document.getElementById('value3440').value;   - возвращает ИД пользователя то есть цифру. и алерт с переменной kkk работает  */

mmm = {$user.fio};
alert (mmm);
}
addHandler(document.getElementById('value4000'), 'onchange', onchange_{$one_field.id});


#3 ManFree

    Активный участник

  • Пользователи
  • PipPipPip
  • 107 сообщений

Отправлено 14 Март 2014 - 08:47

Не работает

#4 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 14 Март 2014 - 09:09

Да, кавычки забыл добавить.

function onchange_{$one_field.id}()
{

/*var kkk = document.getElementById('value3440').value;   - возвращает ИД пользователя то есть цифру. и алерт с переменной kkk работает  */

mmm = '{$user.fio}';
alert (mmm);
}
addHandler(document.getElementById('value4000'), 'onchange', onchange_{$one_field.id});


#5 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 14 Март 2014 - 09:10

Есть так же вариант использовать непосредственно системные переменные javascript, переменная user там также присутствует:

function onchange_{$one_field.id}()
{

/*var kkk = document.getElementById('value3440').value;   - возвращает ИД пользователя то есть цифру. и алерт с переменной kkk работает  */

mmm = user.fio;
alert (mmm);
}
addHandler(document.getElementById('value4000'), 'onchange', onchange_{$one_field.id});


#6 ManFree

    Активный участник

  • Пользователи
  • PipPipPip
  • 107 сообщений

Отправлено 14 Март 2014 - 22:23

Да это работает. Остался маленький нюанс, записи могут видеть все и допустим договор делает пользователь не создававший запись, как вернуть фио пользователя создавшего запись,, и я буду полностью осчастливлен))

#7 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 15 Март 2014 - 14:37

Не понял, что значит "договор делает пользователь не создававший запись" - какую запись?

#8 ManFree

    Активный участник

  • Пользователи
  • PipPipPip
  • 107 сообщений

Отправлено 17 Март 2014 - 18:36

В общем то вопрос не в том. Как вернуть не текущего пользователя(меня), а пользователя который создал запись которую я редактирую. По служебным полям которые есть в каждой записи (id, время статус, пользователь)

#9 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 18 Март 2014 - 09:13

Ну собственно вы сами ответили на свой вопрос: берете его из служебного поля "Кто добавил". Правда, через javascript вы его не получите, но и не совсем понятно зачем вам js для заполнения номера договора? Используйте лучше вычисление - там все проще.

#10 SergKh

    Новичок

  • Пользователи
  • Pip
  • 5 сообщений

Отправлено 27 Март 2014 - 15:20

Добрый день,
подскажите, как взять пользователя из служебного поля "Кто добавил"
Вычисление
$line['ФИО для вычислений'] = $line['Кто добавил'];

приводит к подстановке ID пользователя, а не его ФИО

#11 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 27 Март 2014 - 15:26

Обращаетесь к служебной таблице пользователей:

$user_data = sql_select_array(USERS_TABLE, "id=",$line['Кто добавил']);
$line['ФИО для вычислений'] = $user_data['fio'];


#12 SergKh

    Новичок

  • Пользователи
  • Pip
  • 5 сообщений

Отправлено 27 Март 2014 - 15:37

Спасибо, работает.

А что это за "служебная таблица пользователей" и где ее увидеть?

#13 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 27 Март 2014 - 16:44

Поясняю: все таблицы в базе данных КБ делятся на таблицы конфигурации, которые вы видите во вкладках конфигурации и можете соответственно добавлять/удалять/изменять по своему вкусу, и встроенные служебные или системные таблицы, которые используются для хранения каких-либо настроек, например параметров таблиц, полей, цветовых схем, прав доступа и т.д. Эти таблицы, как я уже сказал, не видны во вкладках конфигурации, но их содержимое видно в соответствующей вкладке Настроек. Например пользователи доступны во вкладке Пользователи.

Если вы откроете БД Клиентской базы напрямую, через соответствующую утилиту вроде phpMyAdmin, то таблицы конфигурации выглядят как cb_data111, где 111 - id таблицы (вместо cb_ может быть другой префикс), а служебные имеют иные, персональные имена. Например, та же таблица пользователей выглядит как cb_users.

#14 GoGPS

    Активный участник

  • Пользователи
  • PipPipPip
  • 159 сообщений
  • Пол:Мужчина

Отправлено 19 Март 2015 - 14:34

Приветствую,
Есть необходимость при выборе в одном поле пользователя из списка, другое поле автоматически заполнялось е-mail этого пользователя.
Создал вычисление, но не срабатывает. Не могли бы подсказать где ошибся. Заранее спасибо!

$user_data = sql_select_array(USERS_TABLE, "id=",$line['Кому']);
$line['Кому (E-mail)'] = $user_data['e-mail'];

#15 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 19 Март 2015 - 15:07

Имя служебного поля не 'e-mail', а 'e_mail'.

Структуру служебных таблиц можно посмотреть через edit_sql.php, под администратором, если у вас не бесплатная версия.

#16 GoGPS

    Активный участник

  • Пользователи
  • PipPipPip
  • 159 сообщений
  • Пол:Мужчина

Отправлено 19 Март 2015 - 15:14

Пасиб, заработало!

#17 goodcolor

    Активный участник

  • Пользователи
  • PipPipPip
  • 206 сообщений
  • Пол:Мужчина
  • Город:Йошкар-Ола

Отправлено 21 Июль 2020 - 19:01

Просмотр сообщенияCbCoder (14 Март 2014 - 09:10) писал:

Есть так же вариант использовать непосредственно системные переменные javascript, переменная user там также присутствует:

function onchange_{$one_field.id}()
{

/*var kkk = document.getElementById('value3440').value;   - возвращает ИД пользователя то есть цифру. и алерт с переменной kkk работает  */

mmm = user.fio;
alert (mmm);
}
addHandler(document.getElementById('value4000'), 'onchange', onchange_{$one_field.id});

Какие ещё системные Javascript переменные доступны на текущий момент кроме user?
Компания "Хороший Цвет"
www.GoodColor.ru - поставки и производство самосветящихся товаров и материалов

#18 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 24 Июль 2020 - 11:26

Как минимум lang и config. Вообще их там много, долго искать все. Можно самостоятельно посмотреть в исходном коде страницы все присвоения в JS через var.

#19 goodcolor

    Активный участник

  • Пользователи
  • PipPipPip
  • 206 сообщений
  • Пол:Мужчина
  • Город:Йошкар-Ола

Отправлено 24 Июль 2020 - 13:52

Просмотр сообщенияCbCoder (24 Июль 2020 - 11:26) писал:

Как минимум lang и config. Вообще их там много, долго искать все. Можно самостоятельно посмотреть в исходном коде страницы все присвоения в JS через var.
Нашёл, спасибо.
Компания "Хороший Цвет"
www.GoodColor.ru - поставки и производство самосветящихся товаров и материалов





Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных