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


При изменении поля, поле связи заполнять определенным значением


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

#1 user103

    Участник

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

Отправлено 29 Март 2016 - 14:33

При изменении поля, если оно не равно 0, поле связи оперФрезеровки заполнить значением строки с id 55 из связанной таблицы
какой правильный синтаксис?
if ($line['Фрезеровка']!='0') $line['оперФрезеровки'] = $line['оперФрезеровки']['55'];

#2 CbCoder

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

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

Отправлено 29 Март 2016 - 15:21

А с чего вы взяли что таким синтаксисом вы сможете обратится к строке с id 55? Вы где-то видели похожий на это пример? Интересно просто.

#3 user103

    Участник

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

Отправлено 30 Март 2016 - 11:31

Так, наобум, пробовал разные варианты, ничего не получается.
Перерыл форум и документацию, не получается найти подсказки)
Вот приходится отвлекать вас от дел насущных.

#4 CbCoder

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

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

Отправлено 30 Март 2016 - 11:42

Я это к тому, что придумывать самому то чего нет, не надо, если не знаете лучше просто спросить как делается.

В вашем случае все проще на совсем деле: if ($line['Фрезеровка']!='0') $line['оперФрезеровки'] = 55, т.к. в полях связи как раз id связанной записи и хранится, а не строка целиком или какое-то иное значение. Если же вам потребовалось бы какое-то иное поле достать из строки с id=55 или даже строку целиком, то в этом случае нужен запрос к таблице, но точно не какое-то "хитрое" обращение через $line.

#5 user103

    Участник

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

Отправлено 30 Март 2016 - 11:58

понял, со всем согласен

if ($line['Фрезеровка окон']!='0') $line['опФрезеровка окон']=55;


условие вычисления - изменение поля фрезеровка окон или сохранение в таблице
но ничего не происходит

#6 CbCoder

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

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

Отправлено 30 Март 2016 - 12:58

А у поля Фрезеровка окон - какой тип поля?

#7 user103

    Участник

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

Отправлено 30 Март 2016 - 14:37

Числовое

#8 CbCoder

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

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

Отправлено 30 Март 2016 - 14:41

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

#9 user103

    Участник

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

Отправлено 01 Апрель 2016 - 11:52

Если сменить на заполнение числового поля
if ($line['Фрезеровкаокон']!=0)
$line['колОтверст']=55;

то код работает корректно, кол отверстий проставляет 55, а вот поле связи также не заполняет

#10 user103

    Участник

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

Отправлено 01 Апрель 2016 - 11:55

Все, нашел ошибку. Работает.

#11 user103

    Участник

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

Отправлено 01 Апрель 2016 - 13:05

А если после изменения, числовое поле вернуть обратно к нулю,
как обнулить поле связи? вот так правильно?
if ($line['Фрезеровкаокон']!=0)
{$line['опФрезеровка']=55;}
else
{$line['опФрезеровка']='';}


#12 CbCoder

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

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

Отправлено 04 Апрель 2016 - 16:23

Цитата

вот так правильно?

Так проверьте, в чем проблема. Код рабочий скорее всего, придраться можно разве что к формальной "красоте" - вместо пустой строки логичнее использовать 0, да и фигурные скобки не в тему тут. Но на работу это не должно влиять (пустая строка приведется к нулю автоматом).





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

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