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

Вывод информации из одного раздела в описание конкретного продукта из другого раздела

03.04.2014, 18:50
mahmah

Зарегистрирован:
2014-01-28
Сообщений: 9

Добрый день! Я не очень разбираюсь в программировании, делаю в основном все по шаблонам и согласно инструкциям)
Никак не могу решить задачу: есть компонент с выставками и есть компонент с музеями. Нужно, чтобы при вводе выставки, она отображалась именно на странице полного описания того музея, где она проходит.
БУДУ очень признательна за помощь!
03.04.2014, 21:12
Nexwich
Панасин Александр
Nexwich

Зарегистрирован:
2011-04-05
Сообщений: 1037

По данному вопросу я отвечал уже не однократно и уже надоело повторятся. Найти одну из подобных тем не смог так как не одна не имеет верного названия как и ваша
http://netcat.ru/support/forum/razrabotka-sayta/topic_13571.html
Здесь есть подобное решение на 80%

Коротко
Вставить в нужное место, где $sub номер раздела с выставками а $cc номер компонента в разделе с выставками
Код:
<?=nc_objects_list($sub,$cc,"db_Message_ID=".$f_RowID."",true)?>

А в компоненте поле создайте поле для записи номера объекта (id музея) например db_Message_ID (чтобы не путаться)
После чего в системных настройках выставок впишите выборку
Код:
if($db_Message_ID) $query_where = " a.db_Message_ID = '".$db_Message_ID."' ";

Как это работает расписано по ссылке.

Модуль "Почтовые уведомления" – настройка email уведомлений на вашем сайте без программирования. Бесплатно. http://netcat.ru/products/CatStore/solution_242.html
03.04.2014, 22:45
Гость
Гость

Александр, спасибо большое! Попробую сделать, вроде бы все поняла, сделаю- отпишусь!
04.04.2014, 00:07
Игорь
Игорь Мишарин
Игорь

Зарегистрирован:
2011-11-20
Сообщений: 479

Я думаю, можно сделать, проще и удобнее. Все-таки, при добавлении новой выставки придется искать номер (RowID) музея, в котором она проводится, что не совсем удобно.
Предлагается добавить поле "Музей, в котором проводится выставка", если его нет. И уже по нему фильтровать.
Т.е. в это поле должно быть выпадающим списком (select), в котором уже есть все музеи, причем формироваться он (список) должен динамически, путем запроса к БД или же прописать функцию в fuction.inc.php.
Если это интересно, могу показать "на пальцах".))

Stark
04.04.2014, 07:35
Гость
Гость

Игорь, спасибо! Покажите, пожалуйста! Я тоже задумалась, что надо будет искать, но сочла это неудобством, которое можно потерпеть ради того, чтобы все выводилось , как хочется. Если есть более удобный способ, я конечно же с удовольствием им воспользуюсь)
04.04.2014, 23:32
Игорь
Игорь Мишарин
Игорь

Зарегистрирован:
2011-11-20
Сообщений: 479

1. В компоненте выставок создаете текстовое поле "Музей"
2. В шаблонах действия и добавления вместо этого поля формируете запросом к БД select с именем поля Музей, например, f_Museum. Запрос производится к компоненту с музеями, выборка поля название:
Код:
listQuery("select distinct Name as name from MessageXX","<option value='\$data[name]'>\$data[name]</option>")

3. В нужно месте вызываете:
Код:
<?=nc_objects_list($sub,$cc,"Museum=$f_Name")?>

4. В Системных настройках шаблона для вывода в Музеях компонента Выставки:
Код:
if($Museum) {$query_where = "a.Museum = '$Museum'";}


Stark
05.04.2014, 15:45
mahmah

Зарегистрирован:
2014-01-28
Сообщений: 9

Игорь,
попробовала, поле добавила, но у меня почему-то при вводе выставки предлагает все музеи и не дает выбрать, просто петерчесление без выборки( где-то я ошиблась?
05.04.2014, 17:09
Игорь
Игорь Мишарин
Игорь

Зарегистрирован:
2011-11-20
Сообщений: 479

Наверняка забыла про <select name='$f_Museum'></select>
<option></option> - это же элемент select'а
Т.е. вот так:
Код:

<select name='f_Museum'>
<option value='$f_Museum'>- выбрать -</option>
<?=listQuery("select distinct Name as name from MessageXX","<option value='\$data[name]'>\$data[name]</option>");?>
</select>


Stark
08.04.2014, 12:03
mahmah

Зарегистрирован:
2014-01-28
Сообщений: 9

Игорь! Список теперь выводится, но все равно не получается, теперь у меня просто выбирается музей, но не передается в качестве параметра.
Я сделала с помощью Связи с другим объектом. Поставила тип поля museum - Связь с объектом Выставки и остальное сделала, как предложил Александр. Вроде бы работает) Но если не сложно, подскажите в чем ошибка опять у меня, т.к. Ваш способ мне нравится больше, удобнее из списка выпадающего выбирать)
08.04.2014, 18:06
Игорь
Игорь Мишарин
Игорь

Зарегистрирован:
2011-11-20
Сообщений: 479

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


Может вы просто не видите то, что есть в полей Музей?
Тогда просто рядом с select'ом вставьте
Код:
<?= $f_Museum ;?>

и будет видно содержимое этого поля.

Stark
09.04.2014, 08:22
Nexwich
Панасин Александр
Nexwich

Зарегистрирован:
2011-04-05
Сообщений: 1037

Ваша ошибка в
<?=listQuery("select distinct Name as name from MessageXX","<option value='\$data[name]'>\$data[name]</option>");?>
Вам необходимо передавать уникальное значение а это Message_ID
А значит в добавок доработать запрос "select distinct Name as name, Message_ID as id" (или "SELECT * FROM MessageXX", "SELECT Message_ID,Name FROM MessageXX") тогда нужно будет вставить в value='\$data[id]'
А последующая выборка должна проходить по этому полю
if($db_Message_ID) $query_where = " a.Museum = '".$db_Message_ID."' ";

Если вы уже запутались, то значит вы именуете поля как вздумается.

Модуль "Почтовые уведомления" – настройка email уведомлений на вашем сайте без программирования. Бесплатно. http://netcat.ru/products/CatStore/solution_242.html
198 196 2014-04-09 08:22:14 13583
Описание проекта