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


вычисления между таблицами


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

#1 Bob_chemist

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

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

Отправлено 07 Март 2012 - 16:09

Есть таблица "заказчик", у нее есть подчиненная таблица "объем работы" (в ней поля: дата, исполнитель ( связь с таб. "исполнитель"), кол-во часов, стоимость часа, сумма (вычисляется автоматически)). Таблица "объем работы" скрыта, т.е. доступ к ней только через просмотр записи родительской таблицы.
Есть таблица "исполнитель", у нее есть подчиненная таблица "оплата работы". Таблица "оплата работы" так же скрыта, доступ через просмотр записи. Кроме начислений за заказчика туда вручную можно добавлять премирования, штрафы и выплаты. Окончательная сумма идет в таб "исполнитель"
В таблице "объем работы" есть вычисление, которое переносит сумму в таблицу "оплата работы":
$sch = data_table("объем работы","id={ID}");
$data['исполнитель'] = $sch['исполнитель'];
$data['За заказчика'] = $sch['заказчик'];
$data['Дата'] = $sch['Дата'];
$data['Начислено'] = $sch['Сумма'];
$new_id = insert_query($data, "оплата работы");
Это вычисление почему то не работает при условии "сохранение в таблице", а работает только при условии "изменение поля 'Сумма' ". Это ошибка?
Всё бы ничего, но, если необходимо исправить ошибочное количество часов или цену часа, то в таблице "оплата работы" появляется новая запись, а старая при этом никуда не девается.
Знаю, что есть функция update_query, но она тоже будет привязана к изменению поля 'Сумма'. Тогда будут работать оба вычисления сразу.
Подскажите выход из ситуации, пожалуйста.

#2 CbCoder

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

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

Отправлено 11 Март 2012 - 10:11

Добавьте в ваш код проверку наличия записи в таблице "оплата работы": если ее еще нет по данному объему работы, то выполняете insert_query, а если уже есть - то update_query.

#3 Bob_chemist

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

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

Отправлено 13 Март 2012 - 17:06

не могу разобраться, как потом найти ту строку, в которую вносились данные. Создал там поле "айди" в которое вносится ID строки из таблицы "объем работы". А как его найти в таблице "оплата работы"?
Код работает только наполовину
$sch = data_table("объем работы","id=$ID");
if ($sch['Новая запись']==0) {
$data['исполнитель'] = $sch['исполнитель'];
$data['За заказчика'] = $sch['заказчик'];
$data['Дата'] = $sch['Дата'];
$data['Начислено'] = $sch['Сумма'];
$data['айди'] = $sch['ID'];
$new_id = insert_query($data, "оплата работы");
$line['Новая запись'] = '1';
}
else {
$a1 = $sch['ID'];
$data['исполнитель'] = $sch['исполнитель'];
$data['Начислено'] = $sch['Сумма'];
update_query($data, "оплата работы", "'айди'=$a1");
}
не могу разобраться в синтаксисе функции update_query. Как используется последняя переменная?

#4 Bob_chemist

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

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

Отправлено 13 Март 2012 - 22:17

все, разобрался. Надо это:
update_query($data, "оплата работы", "'айди'=$a1");
поменять на это:
update_query($data, "оплата работы", "`айди`='".$a1."'");

тяжко все-таки, разбираться, не будучи технарем ))





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

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