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


Добавление записи через вычисление


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

#61 teacs

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

  • Пользователи
  • PipPipPip
  • 80 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 18 Декабрь 2012 - 00:14

Просмотр сообщенияCbCoder (16 Ноябрь 2012 - 09:28) писал:

Разумный вопрос. Действительно, необходимо предусмотреть какой-то флаг в первой таблице, например поле "Копия создана". При сохранении записи это поле можно заполнять словом "Да". Соответственно, перед копированием проверять, заполнено поле, или нет.
 if ($line['Копия создана'] != 'Да') { $ins_data['ПолеБ1'] = $line['ПолеА1']; $ins_data['ПолеБ2'] = $line['ПолеА2']; $ins_data['ПолеБ3'] = $line['ПолеА3']; ......... insert_query("Вторая таблица", $ins_data); $line['Копия создана'] = 'Да'; } 
Есть основная таблица, но она кроме поля связи с подчиненными никак не связана. Такой вопрос подойдет ли такого типа конструкция для передачи данных из полей подчиненной таблицы 1 в поля подчиненной таблицы 2?

#62 Гость_Roman_*

  • Гости

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

Да, вполне подойдёт.

#63 teacs

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

  • Пользователи
  • PipPipPip
  • 80 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

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

$ins_data['Номер'] = $line['Номер'];
insert_query("Монтаж", $ins_data)
Создал вычисление в подчиненной таблице 1, которая значения поля номер должна перенести в подчиненную таблицу 2 создав при этом новую строку.. но ничего не происходит,
Только в подчиненной таблице 1 долго создается строка (подсвечивается желтым и только после обновления страницы показывает номер, который выдается автонумерацией) и который должен передаться в подчиненную таблицу 2..

#64 Гость_Roman_*

  • Гости

Отправлено 19 Декабрь 2012 - 12:49

Вы забыли в конце второй строки поставить ; . Вычисление вызывало Parse Error, поэтому строка была жёлтой и не менялась на белый цвет.

#65 teacs

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

  • Пользователи
  • PipPipPip
  • 80 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 19 Декабрь 2012 - 20:20

Все равно выдает желтую строку, данные опять не добавляются в другую таблицу. Версия 1.9.6 ревизия 6696

#66 Гость_Roman_*

  • Гости

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

Попробуйте добавить строку в эту же подтаблицу, но открыв её как обычную таблицу. Возможно, при добавлении будет указана явная ошибка в вычислении.

#67 teacs

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

  • Пользователи
  • PipPipPip
  • 80 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

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

Просмотр сообщенияRoman (20 Декабрь 2012 - 07:44) писал:

Попробуйте добавить строку в эту же подтаблицу, но открыв её как обычную таблицу. Возможно, при добавлении будет указана явная ошибка в вычислении.
Открыл как обычную таблицу ошибку не выдает, а в подчиненной таблице опять желтая строка и до перезагрузки страницы не появляется значение в поле номер. Поскольку данные надо вставить в текущую таблицу, то данные поля номер переношу в поле примечание. Вычисление ставлю при сохранении в таблице. Вот код вычисления.
$ins_data['Примечание'] = $line['Номер'];
insert_query("Монтаж", $ins_data);
Поле Номер имеет вид "001-236", и получается из вычисления подставляющего к полю Num(автонумерация) индекс 001. т.е. 001-Num

Сообщение отредактировал teacsrem: 21 Декабрь 2012 - 22:42


#68 Гость_Roman_*

  • Гости

Отправлено 22 Декабрь 2012 - 10:43

Сначала не обратил внимание, сейчас только увидел, что порядок следования аргументов в функции не тот.

#69 teacs

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

  • Пользователи
  • PipPipPip
  • 80 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 24 Декабрь 2012 - 09:33

А не подскажете, какой должен быть? Необходимо сначала указать в какую таблицу вставляем данные, а уже после поля?

#70 Гость_Roman_*

  • Гости

Отправлено 24 Декабрь 2012 - 12:43

Наоборот, сначала данные, потом название таблицы.
insert_query($ins_data, "Монтаж");


#71 teacs

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

  • Пользователи
  • PipPipPip
  • 80 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

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

Просмотр сообщенияRoman (24 Декабрь 2012 - 12:43) писал:

Наоборот, сначала данные, потом название таблицы.
insert_query($ins_data, "Монтаж");
Отлично! Теперь работает! Спасибо огромное!
Только вот последнее, что не могу понять как передать данные поля связь по которому связаны эти обе подчиненный таблицы с основной таблицей.. В подчиненной таблице поле связь называется "IDN", в основной таблице "номер заявки"
Пробую таким образом:
$ins_data['IDN'] = $line['Номер заявки']['IDN'];
insert_query($ins_data, "Монтаж");

Сообщение отредактировал teacsrem: 25 Декабрь 2012 - 10:54


#72 Гость_Roman_*

  • Гости

Отправлено 25 Декабрь 2012 - 13:28

Тут тоже наоборот с порядком элементов line. Сначала идёт поле текущей таблицы, затем поле связанной. Т. е.
$line['IDN']['Номер заявки'];
Насколько я понял, в Вашей конфигурации должно быть так.

#73 teacs

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

  • Пользователи
  • PipPipPip
  • 80 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

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

Спасибо, все отлично работает!

#74 wondertalik

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

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

Отправлено 11 Февраль 2013 - 12:11

Обращение $line['имя поля'] работает в вычислениях при всех условиях(при сохр, при отображении поля...), аналогично интересует поле связи $line['имя поля связи']['имя поля из связанной таблицы']?

#75 Гость_Roman_*

  • Гости

Отправлено 11 Февраль 2013 - 12:26

Да, такая конструкция тоже работает при всех условиях.

#76 wondertalik

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

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

Отправлено 15 Февраль 2013 - 22:31

Просмотр сообщенияRoman (11 Февраль 2013 - 12:26) писал:

Да, такая конструкция тоже работает при всех условиях.
Отлично, а то раньше не при всех условиях отрабатывало. Скорее всего был баг, который поправили.

#77 f-jeka

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

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

Отправлено 21 Март 2013 - 07:47

Хочу в таблицу Контрагенты добавить новое поле в котором бы отображалась последняя запись из таблицы "Работа с клиентом". Само поле добавил и связал с таблицей "Работа с клиентом", но записи не появляются. Напишите, пожалуйста, пример кода вычислений и куда его правильно добавить.

#78 Гость_Roman_*

  • Гости

Отправлено 21 Март 2013 - 08:55

$result = data_select_field(100, "max(`id`) AS `max_id`", "`status`=0 and `f1204`=",$line['Компания']['ID']);
if ($row = sql_fetch_assoc($result))
    $line['Компания']['Последняя запись'] = $row['max_id'];
else
    $line['Компания']['Последняя запись'] = 0;
, где 100 - ид таблицы "Работа с клиентом", f1204 - поле связи с компанией. Вычисдение добавляется в таблицу "Работа с клиентом", условия - сохранение, удаление.

#79 f-jeka

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

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

Отправлено 23 Март 2013 - 23:38

Просмотр сообщенияRoman (21 Март 2013 - 08:55) писал:

 $result = data_select_field(100, "max(`id`) AS `max_id`", "`status`=0 and `f1204`=",$line['Компания']['ID']); if ($row = sql_fetch_assoc($result)) $line['Компания']['Последняя запись'] = $row['max_id']; else $line['Компания']['Последняя запись'] = 0; 
, где 100 - ид таблицы "Работа с клиентом", f1204 - поле связи с компанией. Вычисдение добавляется в таблицу "Работа с клиентом", условия - сохранение, удаление.
Что то не получается осуществить. Можно несколько уточнений?
Поле связи с компанией это то поле которое я создал в разделе "Контрагенты" и которое связал с таблицей "Работа с клиентом" ?
Почему вычисление добавляется в таблицу "Работа с клиентом" если мне нужно отображение последней записи в таблице "Контрагенты" ?

#80 Гость_Roman_*

  • Гости

Отправлено 26 Март 2013 - 08:09

Нет, поле связи с компанией - это поле "Компания" в таблице "Работа с клиентом".
Вычисление на отображение поля является не оптимальным способом, поэтому лучше все вычисления добавлять к целевым событиям, т. е. в данном случае изменение данных в таблице "Работа с клиентом".





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

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