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


Получить ID через Java


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

#1 Mr_Nuke

    Новичок

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

Отправлено 14 Сентябрь 2011 - 17:22

Столкнулся с проблемой, есть связанные таблицы, по типу Категория -> Товары. Когда я редактирую категорию, мне предлагается выбрать ID категории из списка товаров, для подгрузки онных.
При редактировании, я хочу ID категории подставлять автоматом, исходя из ID редактируемой записи. Пытаюсь через Javascript получить ID записи (var obj=document.getElementById('value912').value;), но в obj ничего не возвращается

#2 CbCoder

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

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

Отправлено 15 Сентябрь 2011 - 09:08

Не очень понял, о чем речь. Приведите скриншоты хотя бы, с комментариями. Или опишите подробнее.

#3 Mr_Nuke

    Новичок

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

Отправлено 15 Сентябрь 2011 - 12:08

Есть таблица "Контрагенты", у нее есть связанная таблица "Сотрудники".
Поля таблицы "Контрагенты":
- id
- основной контакт
- id контрагента

Поля таблицы "Сотрудники":
- id
- ФИО
- id Контрагента

Задача в том, что бы в поле "основной контакт" отображались сотрудники только для данного контрагента. Постом выше, я писал о том, что поле "ID" в "Контрагенты" нельзя с связать с "ID Контрагента" в "Сотрудники". Поэтому я создаю в таблице "Контрагенты" поле "id контрагента", и связываю его с одноименным полем в сотрудниках.
В результате получается что поле "ID Контрагента" в "Контрагентах" становится списком, и предлагает мне выбрать, для какого контрагента выводить сотрудников в "основном контакте". Мне этот выбор не нужен. Нужно что бы сотрудники всегда выводились именно для конкретного контрагента.


					
					<br />
					
				</div>
				
<script type= ipb.global.registerReputation( 'rep_post_8278', { domLikeStripId: 'like_post_8278', app: 'forums', type: 'pid', typeid: '8278' }, parseInt('0') );

#4 CbCoder

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

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

Отправлено 15 Сентябрь 2011 - 13:23

Теперь понятно. Javascript здесь не нужен, используйте вычисление в поле "ID контрагента". Вычисление простейшее: return {ID}; Само поле можно скрыть уже через JS (тогда вычисление и соответственно фильтр будут выполняться, но поле не будет отвлекать внимание).

#5 Mr_Nuke

    Новичок

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

Отправлено 15 Сентябрь 2011 - 15:03

Написал, не работает.
К примеру, если я пишу в поле "ID контрагента" таблицы "Контрагенты" return "12"; то он ищет сотрудника с ID=12, и в поле "Контрагенты" "ID контрагента" записывает id контрагента, который есть у сотрудника c ID = 12.

#6 CbCoder

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

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

Отправлено 15 Сентябрь 2011 - 15:19

Да, я неверно написал. Забыл что поле "ID контрагента" связано с таблицей Сотрудники, и соответственно должно брать id оттуда, а не напрямую из контрагента. Вычисление будет несколько сложней:

$sotr = data_table("Сотрудники","`ID Контрагента`={ID}");
return $sotr['ID'];


#7 Mr_Nuke

    Новичок

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

Отправлено 15 Сентябрь 2011 - 15:44

Отлично! Все работает! Спасибо :unsure:

#8 Mr_Nuke

    Новичок

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

Отправлено 16 Сентябрь 2011 - 10:10

П.С. Я правильно понимаю, что создать такую связь между таблицами нельзя без вспомогательного поля "ID Контрагентра" в "Контрагентах", так как к стандартному полю ID нелья сделать тип "связь"?

#9 CbCoder

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

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

Отправлено 16 Сентябрь 2011 - 10:47

Фильтр в поле Сотрудники вы можете сделать только по другому полю связи, причем связанному с той же таблицей. Разумеется стандартный ID для этой цели не подходит. Приведенное решение является единственным оптимальным на текущем движке.





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

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