Подстановка пользователя в поле типа "Связь"
#1
Отправлено 10 Апрель 2014 - 10:00
Нужно автоматически связать таблицу "Контрагенты" с таблицей "Наши сотрудники"
Каждому контрагенту присваивается текущий менеджер в поле "Менеджер". Нужно, чтобы данная запись автоматически связалась с записью текущего менеджера в таблице "Наши менеджеры".
Попробовал в поле типа связь "Наши сотрудники" подставить значение из поле типа пользователь "Менеджер" стандартным образом, но не работает, т.к. скорее всего это не корректно.
Как это сделать правильно? Подскажите пожалуйста.
www.GoodColor.ru - поставки и производство самосветящихся товаров и материалов
#2
Отправлено 10 Апрель 2014 - 10:21
#3
Отправлено 10 Апрель 2014 - 10:32
Напишите пример кода пожалуйста...
www.GoodColor.ru - поставки и производство самосветящихся товаров и материалов
#4
Отправлено 10 Апрель 2014 - 15:35
$sqlQuery = "SELECT f2481 FROM ".DATA_TABLE."46 WHERE status=0 AND f916=$ID"; $res = mysql_query($sqlQuery); $row = mysql_fetch_array($res); $sotr = $row['f2481']; if ($sotr = $line['Менеджер']) $line['Наши сотрудники'] = $sotr;Ошибок нет, но и ничего не подставляет.
f2481 - поле типа пользователь в таблице "Наши сотрудники"
"Наши сотрудники" - поле типа связь в таблице "Контрагенты"
www.GoodColor.ru - поставки и производство самосветящихся товаров и материалов
#5
Отправлено 10 Апрель 2014 - 15:53
$sqlQuery = "SELECT id FROM ".DATA_TABLE."46 WHERE status=0 AND f2481='".$line['Менеджер']."'"; $res = mysql_query($sqlQuery); $row = mysql_fetch_array($res); $sotr = $row['id']; $line['Наши сотрудники'] = $sotr;
#6
Отправлено 10 Апрель 2014 - 15:56
$res = data_select(46, "status=0 AND f2481=",$line['Менеджер']); $row = sql_fetch_array($res); $sotr = $row['id']; $line['Наши сотрудники'] = $sotr;
#7
Отправлено 10 Апрель 2014 - 17:01
С вашим все работает, благодарю.
Теперь есть задача записать в таблицу "Контрагенты" в поле "Менеджер 2" по полю связи "Наши сотрудники" значение из поля "Менеджер 3" таблицы "Наши сотрудники", срабатываемое при изменении поля "Менеджер 3"
Я так понимаю, что код ниже не будет работать, т.к. отсутствует поле связи со стороны таблицы "Наши сотрудники"?
$line['Наши сотрудники']['Менеджер 2'] = $line['Менеджер 3'];
Как тогда быть в этом случае?
Срабатывание вычисление при сохранении и отображении поля не пойдет, т.к. нужно обновить поле "Менеджер 2" во всех строках.
www.GoodColor.ru - поставки и производство самосветящихся товаров и материалов
#8
Отправлено 11 Апрель 2014 - 11:39
Цитата
Да, не будет, т.к. для этого должно быть поле связи с Контрагентом в таблице Наши сотрудники, а у вас наоборот - связь с сотрудником в Контрагенте.
Можно обратится запросом на обновление к таблице Контрагенты, используя связь контрагента с сотрудником:
data_update(42, array('f111'=>$line['Менеджер 3']), "f222=",$line['ID']); // 111 - id поле Менеджер 2, 222 - поле Наши сотрудники
#9
Отправлено 11 Июнь 2014 - 12:31
$res = data_select(46, "status=0 AND f2481=",$line['Менеджер']); $row = sql_fetch_array($res); $sotr = $row['id']; $line['Наши сотрудники'] = $sotr;Если в поле "Менеджер" нет значения, то используется первая запись из таблицы 46 и подставляется в поле "Наши сотрудники"
А нужно, чтобы там пусто было...
Я так понимаю, что чего-то не хватает?
Пробовал добавлять условие срабатывания кода при условии, что $line['Менеджер'] != " ", но не сработало.
www.GoodColor.ru - поставки и производство самосветящихся товаров и материалов
#10
Отправлено 11 Июнь 2014 - 13:11
Цитата
Исходя из кода, быть такого не может. Если там действительно пусто, то запрос вернет false и $sotr будет пустым.
#11
Отправлено 11 Июнь 2014 - 15:02
www.GoodColor.ru - поставки и производство самосветящихся товаров и материалов
#12
Отправлено 27 Июнь 2014 - 17:20
Делаю вычисление:
if ($line['Поле типа Связь'] == null) { $res = data_select(351, "status=0 AND f5251=",$line['Текстовое поле']); $row = sql_fetch_array($res); $sotr = $row['id']; $line['Поле типа связь'] = $sotr; }
351 - текущая таблица
f5251 - то же поле, что и $line['Текстовое поле']
В итоге в поле $line['Поле типа связь'] подставляется значение не соответствующее значение, а самое первое значение из таблицы.
www.GoodColor.ru - поставки и производство самосветящихся товаров и материалов
#13
Отправлено 28 Июнь 2014 - 13:25
$res = data_select(351, "status=0 AND f5251='",$line['Текстовое поле'],"'");
Иначе, значение считается числовым и преобразуется в число. А если бы это был прямой sql-запрос - вообще вышла бы ошибка.
#14
Отправлено 28 Июнь 2014 - 18:58
Это относительно предыдущей ситуации:
$res = data_select(46, "status=0 AND f2481=",$line['Менеджер']); $row = sql_fetch_array($res); $sotr = $row['id']; $line['Наши сотрудники'] = $sotr;
www.GoodColor.ru - поставки и производство самосветящихся товаров и материалов
#15
Отправлено 29 Июнь 2014 - 13:00
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных