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


Перезапись данных при изменении статуса в другой таблице

перезапись скрипт сума перезапись даных

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

#1 Midori

    Новичок

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

Отправлено 06 Август 2014 - 12:43

Есть 2 таблицы - Заявки и Расчет зп.
При изменении значения поля Статус на "провели" в таблице Заявки
в таблице Расчет з/п к значению поля Стоимость праздника добавляем значение поля Стоимость из таблицы Заявок.
Проверка в какую из строк суммировать значение идёт по имени менеджера.
Срабатывание вычисления установлено на сохранение в таблице и изменение поля Статус.

$status = $line['Статус'];

if ($status == 'провели'){

  $cond = "`f7151`='" . $line['Кто добавил'] . "'";

  $result = data_select_field(481, '`Стоимость праздника` as summ', $cond);
  $row = sql_fetch_assoc($result);
  $data['Стоимость праздника']=$row['summ'] + $line['Стоимость'];

  update_query($data, "Расчет з/п", "`ФИО работника`='" . $line['Кто добавил'] . "'");
}

Собственно проблема:
при изменении поля Статус скрипт не вызывается либо ошибка в самом скрипте, не отображающаяся в Логах.

#2 CbCoder

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

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

Отправлено 06 Август 2014 - 14:51

Странно, что ошибка не вывелась, как вы утверждаете, т.к. у вас использовано некорректное имя поля в запросе. В функции data_select_field должны использоваться только внутренние поля, т.е. `Стоимость праздника` - это неверное имя поля.

Поясняю: есть 2 типа наших функций для sql-запросов (так исторически сложилось): функции data_table и *_query используют внешние имена, как в аргументах, так и в результатах. В отличии от них, функции data_* (кроме data_table) более низкоуровневые, и используют только внутренние БД-имена таблиц и полей, как правило основанные на их id. Во избежание путаницы старайтесь в коде использовать только функции одного типа (какие вам удобнее).





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

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