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


Динамический расчет полей.


В теме одно сообщение

#1 wondertalik

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

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 07 Декабрь 2012 - 02:21

Собственно есть три поля: поле1, поле2, поле3. В каждое из этих полей и только одно может быть введено числовое значение. При этом остальные поля должны расчитыватся автоматом через вычисление. Заранее не известно в какое поле будет вводится значение и сколько раз. Например, я ввожу 10 в поле1, поле2 и поле 3 расчитываются. Потом ввожу 15 в поле2, поле1 и поле3 расчитываются. После ввожу в поле3 25, поле2 и поле1 расчитываются заново. Данный функционал необходим в подчиненных таблицах.

Я создал вычисления на изменения поля во всех трех полях. Например,
//Вычисление на изменение поля1
$line['поле2'] = $line['поле1'] * 2;
$line['поле3'] = $line['поле1'] * 3;
//Вычисление на изменение поля2
$line['поле1'] = $line['поле2'] * 5;
$line['поле3'] = $line['поле2'] * 6;
//Вычисление на изменение поля3
$line['поле2'] = $line['поле3'] * 7;
$line['поле1'] = $line['поле3'] * 8;


При таких условиях получается что срабатывают все вычисления при изменении одного из полей. В итоге, если я изменяю поле1, срабатывает первое вычисление, поле 2 и 3 заполняются даннымми, и поочереди срабатывают вычисления 2 и 3. А мне нужно чтобы срабатывало только одно из них!

#2 Analitic

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

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

Отправлено 07 Декабрь 2012 - 11:48

//Вычисление на изменение поля1
global $my_was_changed;
if ($my_was_changed) return ;
$my_was_changed=1;

$line['поле2'] = $line['поле1'] * 2;
$line['поле3'] = $line['поле1'] * 3;
//Вычисление на изменение поля2
global $my_was_changed;
if ($my_was_changed) return ;
$my_was_changed=1;


$line['поле1'] = $line['поле2'] * 5;
$line['поле3'] = $line['поле2'] * 6;
//Вычисление на изменение поля3
global $my_was_changed;
if ($my_was_changed) return ;
$my_was_changed=1;


$line['поле2'] = $line['поле3'] * 7;
$line['поле1'] = $line['поле3'] * 8;






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

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