Есть вычисление
if ($event['type'] == "delete") { update_room($line['Помещение']['ID'], $line['ID'], $line); return; } if ($event['changed'][4591]) { $old_room = $event['changed'][4591]['old']; $new_room = $event['changed'][4591]['new']; //Здесь возникает проблема. Когда вы меняем поле 4591, //то в старом помещение изменения происходят, но в интерфейсе они не отображаются if ($old_room) update_room($old_room); if ($new_room) update_room($new_room, 0, $line); return; } if ($line['Помещение']) { update_room($line['Помещение']['ID'], 0, $line); } //Данная функция обновляет данные в родительской таблице //Если использовать data_update, то данные не обновятся в реальном времени в карточке function update_room($room_id, $ignore_id = 0, &$line) { $query = data_select_field(301, "sum(f4201) as sum, sum(f5191) as seb", "status=0 AND f4591=" . $room_id . " AND id !=". $ignore_id); $data = sql_fetch_assoc($query); if ($line) { $line['Помещение']['Сумма'] = $data['sum']; $line['Помещение']['Себестоимость'] = $data['seb']; } else data_update(341, EVENTS_ENABLE, array("f4721" => $data['sum'], "f5271" => $data['seb']), "id=" . $room_id); }
Проблема вот в чем.Если использовать обновление с помощью функции data_update, то значения все корректно присвоятся, но в интерфейсе, без перезагрузки страницы, не отобразятся.
Используя ссылку на переменную $line можно обойти этот момент.
Однако работать с $line, когда нам нужно обновить данные по старому полю связи ($old_room = $event['changed'][4591]['old'] не получится.
Вопрос - как сделать, чтобы значения таки обновлялись без перезагрузки страницы?