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


Проблема с вычислениями.


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

#1 Илья

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

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

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

Здравствуйте!

Поставил версию 1.9.5 (ревизия 3015) теперь не могу понять как мне реализовать следующее:

Есть таблица "Реклама". В ней содержатся данные по компаниям.
Есть Поле1 - содержит сведения о юр.форме компании (ООО, ОАО, ЗАО и т.д.)
Есть Поле2 - содержит название организации ("Рога и Копыта" и т.д.)

Есть таблица "Клиенты", в которой есть поле "Название", являющееся связью для Поля2 таблицы "Реклама"
Также есть поле "Полное название"

Хочется реализовать такую вещь:

При заполнении второй таблицы ("Клиенты") программа бы глядела на поле "Название" и сама заполняла поле "Полное название", исходя из значений Поля1 и Поля2 таблицы "Реклама".

Переношу базу с версии 1.8.5, там всё реализовывалось вот таким кодом вычислений:
$name = data_table("Клиенты","id={ID}");
$form = data_table("Реклама","id='".$name['Название']."'");
return $form['Форма']." ".$form['Название организации'];

А как быть в новой версии - не могу понять совсем.

Спасибо.

#2 CbCoder

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

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

Отправлено 26 Декабрь 2011 - 15:21

После переноса у вас автоматически должно было заменится слово return на $line['Полное название'], т.е. должно было получится
$name = data_table("Клиенты","id={ID}");
$form = data_table("Реклама","id='".$name['Название']."'");
$line['Полное название'] = $form['Форма']." ".$form['Название организации'];

И все должно работать. Хотя по новой схеме оптимальнее должно быть так:
$form = data_table("Реклама","id='".$line['Название']."'");
$line['Полное название'] = $form['Форма']." ".$form['Название организации'];

т.е. получать текущую запись не надо, т.к. она уже есть в массиве $line.

#3 Илья

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

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

Отправлено 27 Декабрь 2011 - 06:16

Что-то не работает...

Вот реакция на приведенный Вами второй код:
Fatal error: Unknown column 'Полное название' in 'field list'
UPDATE cb_data89 SET `Полное название`=' ' WHERE id='1'
in /var/www/cb/include/functions1.php on line 185


#4 Илья

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

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

Отправлено 27 Декабрь 2011 - 06:39

Надо быть внимательней, сколько раз себе говорил.
База ругалась потому что в названии графы в конце было два лишних пробела! Я олух, в общем.

Но, тем не менее, работает только первый вариант кода, второй возвращает пустое значение.

#5 CbCoder

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

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

Отправлено 27 Декабрь 2011 - 11:30

Просмотр сообщенияИлья (27 Декабрь 2011 - 06:39) писал:

тем не менее, работает только первый вариант кода, второй возвращает пустое значение.

Попробуйте такой вариант:
$form = data_table("Реклама","id='".$line['Название']['ID']."'");
$line['Полное название'] = $form['Форма']." ".$form['Название организации'];

Дело в том что поля связи сейчас "раскрываются" в массив полей связанной таблицы.

#6 Илья

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

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

Отправлено 27 Декабрь 2011 - 12:29

Я сделал всё с первым вариантом кода, вроде рботает. Спасибо большое!

#7 CbCoder

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

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

Отправлено 27 Декабрь 2011 - 12:31

Второй вариант просто существенно быстрее должен работать. Но если у вас небольшая таблица и нет заметного торможения - то да, пойдет и первый.





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

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