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


Отследить предыдущее значение поля


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

#1 z3dom

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

  • Пользователи
  • PipPipPip
  • 34 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 12 Ноябрь 2018 - 16:19

Подскажите пожалуйста, можно ли в вычислении отследить предыдущее значение поля.
Т.е. при изменении поля срабатывает некоторое ВЫЧИСЛЕНИЕ, в котором надо знать и текущее (уже измененное) значение поля и предыдущее.

#2 AntonKravchenko

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

  • Пользователи
  • PipPipPip
  • 152 сообщений
  • Пол:Мужчина
  • Город:Нижний Новгород

Отправлено 12 Ноябрь 2018 - 20:58

Старое значение поля хранится в массиве $event['changed'][ID_ПОЛЯ]['old'], ID_ПОЛЯ только цифры из ID поля из БД. Например, при изменении поля f1234 его старое значение будет в массиве $event['changed'][1234]['old'].
Новое значение поля хранится в $line[ИМЯ_ПОЛЯ], например, $line['Территория']

#3 z3dom

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

  • Пользователи
  • PipPipPip
  • 34 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 13 Ноябрь 2018 - 13:32

Спасибо!!! Буду тестить!

#4 z3dom

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

  • Пользователи
  • PipPipPip
  • 34 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 20 Ноябрь 2019 - 12:05

Правильно ли понимаю, что изменение поля add_time нужно отслеживать через $event['changed'][add_time]['old']?
Может быть у него какое-то другое название поля в данном варианте использования, потому что сейчас отследить старое значение поля не получается.

#5 z3dom

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

  • Пользователи
  • PipPipPip
  • 34 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 20 Ноябрь 2019 - 12:10

Вопрос решился. Номер поля можно посмотреть в адресной строке при редактировании

#6 z3dom

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

  • Пользователи
  • PipPipPip
  • 34 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 20 Ноябрь 2019 - 13:51

Столкнулся с проблемой, которая очень напоминает баг, но возможно что и я где-то туплю.
Есть таблички:
1) test1 (поле ID)
2) test2(поле связи test1 (f15351), ссылающееся на ID таблицы test1, поле comment)

Задача - в таблице test2 "отловить" изменение поля test1 и вытащить его старое значение.

Вычисление:

$line['comment']="";
if($event['changed'][15351]['old']) {
    $old=$event['changed'][15351]['old']['ID'];
    $line['comment']="Текущий ID ".$line['test1']['ID'].", старый ID ".$old;
}
    else
    {
    $old=$line['test1']['ID'];$line['comment']="Не изменено";
    }

Соответственно при изменении поля test1 постоянно видим в комментах сообщение:
Текущий ID 1, старый ID 3
Текущий ID 4, старый ID 1
и т.д.

ПРОБЛЕМА:
если ссылаться на диапазон полей таблицы test1 от 1 до 9 - то все работает отлично, но как только ссылаемся на двух или трехзначные ID шники - то в старом значении ID сохраняется только ПЕРВАЯ ЦИФРА от ID.

Вот пример:
(вот так работает нормально)
Текущий ID 1, старый ID 3
Текущий ID 5, старый ID 1
Текущий ID 9, старый ID 5
(пошли двузначные и трехзначные)
Текущий ID 15, старый ID 9
Текущий ID 10, старый ID 1
Текущий ID 16, старый ID 1
Текущий ID 923, старый ID 1
Текущий ID 14, старый ID 9
Текущий ID 12, старый ID 1

Баг или ошибка?

#7 z3dom

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

  • Пользователи
  • PipPipPip
  • 34 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 02 Декабрь 2019 - 15:49

Просмотр сообщенияz3dom (20 Ноябрь 2019 - 13:51) писал:

Столкнулся с проблемой, которая очень напоминает баг, но возможно что и я где-то туплю.
Есть таблички:
1) test1 (поле ID)
2) test2(поле связи test1 (f15351), ссылающееся на ID таблицы test1, поле comment)

Задача - в таблице test2 "отловить" изменение поля test1 и вытащить его старое значение.

Вычисление:

$line['comment']="";
if($event['changed'][15351]['old']) {
	$old=$event['changed'][15351]['old']['ID'];
	$line['comment']="Текущий ID ".$line['test1']['ID'].", старый ID ".$old;
}
	else
	{
	$old=$line['test1']['ID'];$line['comment']="Не изменено";
	}

Соответственно при изменении поля test1 постоянно видим в комментах сообщение:
Текущий ID 1, старый ID 3
Текущий ID 4, старый ID 1
и т.д.

ПРОБЛЕМА:
если ссылаться на диапазон полей таблицы test1 от 1 до 9 - то все работает отлично, но как только ссылаемся на двух или трехзначные ID шники - то в старом значении ID сохраняется только ПЕРВАЯ ЦИФРА от ID.

Вот пример:
(вот так работает нормально)
Текущий ID 1, старый ID 3
Текущий ID 5, старый ID 1
Текущий ID 9, старый ID 5
(пошли двузначные и трехзначные)
Текущий ID 15, старый ID 9
Текущий ID 10, старый ID 1
Текущий ID 16, старый ID 1
Текущий ID 923, старый ID 1
Текущий ID 14, старый ID 9
Текущий ID 12, старый ID 1

Баг или ошибка?
Мой косяк, надо было ссылаться на $event['changed'][15351]['old'], а не на $event['changed'][15351]['old']['ID']





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

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