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


Вопрос по работе с интерфейсом


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

#1 sxquer

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

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

Отправлено 25 Декабрь 2014 - 09:46

Добрый день!

Есть вычисление

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'];) не получится.

Вопрос - как сделать, чтобы значения таки обновлялись без перезагрузки страницы?

#2 CbCoder

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

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

Отправлено 25 Декабрь 2014 - 10:15

Боюсь никак, если только добавлять скрытое поле и копировать туда старое значение средствами js, а затем использовать $line по нему для обновления.

#3 sxquer

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

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

Отправлено 25 Декабрь 2014 - 12:15

Можно пример? Что-то не соображу, как это реализовать с js'ом

#4 CbCoder

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

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

Отправлено 25 Декабрь 2014 - 14:03

Примеры есть в теме по JS. Добавляете стандартно функцию на событие изменения поля, а в самой функции копируете значение.





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

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