0 Пользователей и 1 Гость просматривают эту тему.
  • 21 Ответов
  • 7092 Просмотров
*

Sergey2

  • Давно я тут
  • 651
  • 15 / 1
Есть таблица в БД, созданная мной. В таблице идет привязка данных к id материала.
Нужно при выводе материала вывести эти данные. Данные нужно вывести после заголовка и перед текстом, так что подойдет com_content.
А как их выводить? Вернее даже не так.
Как более правильно сформировать sql запрос?
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Re: Вывести в материале значения из БД
« Ответ #1 : 30.09.2010, 07:22:45 »
Подобная тема: http://joomlaforum.ru/index.php/topic,131575.msg719308.html#msg719308
добавляешь в выборку свое поле, скажем SELECT my.some_field ....
а во фрагмент FROM присоединяешь свою таблицу, типо так:
FROM #__content AS a
    LEFT JOIN #__mytable AS my ON my.article_id = a.id'
А во вью материала выводишь так: echo $this->article->some_field;
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

Sergey2

  • Давно я тут
  • 651
  • 15 / 1
Re: Вывести в материале значения из БД
« Ответ #2 : 30.09.2010, 19:19:29 »
а у меня там должно не одно поле "вылести", а несколько. Как массив получить? Массив я знаю как обработать, а вот с SQL у меня туго :(
*

userxp

  • Живу я здесь
  • 2019
  • 403 / 6
  • Злой и ужасный бармалей
Re: Вывести в материале значения из БД
« Ответ #3 : 30.09.2010, 19:42:40 »
Код: php
$sql = "SELECT id, title, alias FROM #__content WHERE state=1 LIMIT 10";
$db = &JFactory::getDBO();
$db->setQuery( $sql );
$rows = $db->loadAssocList();

print_r( $rows );
Как правильно задавать вопрос службе технической поддержки  yes!
SGA CM 7.2.0 RC0 KANG Build GWK74 + s95allinonescript + CWM 5.0.2.6 + Modem XWKT3
*

Sergey2

  • Давно я тут
  • 651
  • 15 / 1
Re: Вывести в материале значения из БД
« Ответ #4 : 30.09.2010, 19:46:21 »
Код: php
$sql = "SELECT id, title, alias FROM #__content WHERE state=1 LIMIT 10";
$db = &JFactory::getDBO();
$db->setQuery( $sql );
$rows = $db->loadAssocList();

print_r( $rows );
неее, ну на таком уровне я sql знаю. Как его в вышепрведенный пример засунуть? Или
$this->article->some_fields->rows - и есть нужный мне массив?
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Re: Вывести в материале значения из БД
« Ответ #5 : 30.09.2010, 19:49:04 »
Блин...
SELECT my.some_field, my.some_field2, my.some_field3 ...

echo $this->article->some_field;
echo $this->article->some_field2;
echo $this->article->some_field3;
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

Sergey2

  • Давно я тут
  • 651
  • 15 / 1
Re: Вывести в материале значения из БД
« Ответ #6 : 30.09.2010, 19:52:28 »
Блин...
SELECT my.some_field, my.some_field2, my.some_field3 ...

echo $this->article->some_field;
echo $this->article->some_field2;
echo $this->article->some_field3;
я наверно некоректно выразился. Не поле а запись. Т.е. заданному SELECT будут соответствовать несколько записей. Мне бы массив получить....
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Re: Вывести в материале значения из БД
« Ответ #7 : 30.09.2010, 20:18:19 »
У вас одному материалу соответсвтвует несколько записей?
Тогда думаю (по крайней мере будет проще) нужно делать отдельный запрос в вашу таблицу

после          
Код
if ( ! $this->_article ) {
return false;
}
пишем

Код
			$query = 'SELECT *.
' FROM #__mytable AS my' .
' WHERE my.id = ' . (int) $this->_id;
$this->_db->setQuery($query);
$this->_article->myfields = $this->_db->loadObjectList();

print_r($this->_article->myfields);
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

Sergey2

  • Давно я тут
  • 651
  • 15 / 1
Re: Вывести в материале значения из БД
« Ответ #8 : 30.09.2010, 20:21:26 »
У вас одному материалу соответсвтвует несколько записей?
да, именно так.
Цитировать
Тогда думаю (по крайней мере будет проще) нужно делать отдельный запрос в вашу таблицу

после          
Код
if ( ! $this->_article ) {
return false;
}
пишем

Код
			$query = 'SELECT *.
' FROM #__mytable AS my' .
' WHERE my.id = ' . (int) $this->_id;
$this->_db->setQuery($query);
$this->_article->myfields = $this->_db->loadObjectList();

print_r($this->_article->myfields);
ясно, спасибо.
*

Sergey2

  • Давно я тут
  • 651
  • 15 / 1
Re: Вывести в материале значения из БД
« Ответ #9 : 02.10.2010, 01:02:44 »
и последний глупый вопрос. Вот сделал я это все. Наковырял в form.php и в админке. А как теперь сделать так что бы сохранялось это после редактирования материала?
Когда поле в той же таблице как и митериал (ну или в другой таблице), то оно "само" сохраняется. Но у меня там не одно поле, а несколько и сколько конкретно неизвестно. В каком месте все это дело сохраняется? Где ковырять?
*

Sergey2

  • Давно я тут
  • 651
  • 15 / 1
Re: Вывести в материале значения из БД
« Ответ #10 : 08.10.2010, 16:04:52 »
А как с массивами работать? Вот поле metadata в таблице _content - это же массив. Как мне сделать такое же поле?
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Re: Вывести в материале значения из БД
« Ответ #11 : 08.10.2010, 16:18:53 »
Это обычное ничем не примечаетьное поле типа text.
Чтобы получить значения из поля metadata:
Код: php
$params = new JParameter($row->metadata);
echo $params->get('robots');
echo $params->get('author');
чтобы записать:
$params = new JParameter('');
$params->set('author', 'вася');
echo $params->toString();
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Re: Вывести в материале значения из БД
« Ответ #12 : 08.10.2010, 16:20:07 »
Можно сохранять и вытягивать чистый массив, без всяких jparameter. Тут на помощь придут php-функции serialize() и unserialize()
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

Sergey2

  • Давно я тут
  • 651
  • 15 / 1
Re: Вывести в материале значения из БД
« Ответ #13 : 08.10.2010, 16:27:28 »
Неее, мне не надо работать с metadata. Я хочу создать вот такую фигню:
При редактировании материала есть выпадающий список:
<select><option ... и т.д.
Собственно с ним я работать научился. Все нормально. Но мне нужно что бы в этом селекте можно было выбрать несколько значений, т.е. уже не одна переменная <select name"my_element" ... а <select name"my_element[]"... вот как этот массив мне сохранить?
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Re: Вывести в материале значения из БД
« Ответ #14 : 08.10.2010, 16:38:55 »
$values = JRequest::getVar('my_element', array(), 'array');
в базу пишем implode('|', $values)

в параметрах модуля это все автоматизировано кстати.
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

Sergey2

  • Давно я тут
  • 651
  • 15 / 1
Re: Вывести в материале значения из БД
« Ответ #15 : 08.10.2010, 16:43:07 »
$values = JRequest::getVar('my_element', array(), 'array');
в базу пишем implode('|', $values)

в параметрах модуля это все автоматизировано кстати.
а можно поподробней для тупых, типа меня. У меня проблема именно с сохранением в базу. Раньше я ничего для этого не делал. Сделал как тут написано http://joomlaforum.ru/index.php/topic,40455.0.html и все само сохранялось. Куда надо вставить строчку implode('|', $values) что бы в базу записалось?
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Re: Вывести в материале значения из БД
« Ответ #16 : 08.10.2010, 16:58:38 »
А..ну тогда чесно говоря не подскажу...
И помоему проще не воротить такую кучу файлов, а добавить в administrator\components\com_content\models\article.xml в раздел params это:
Код: xml
		<param name="my_element" type="list" label="My Element">
<option value="0">value 1</option>
<option value="1">value 2</option>
<option value="2">value 3</option>
</param>
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

Sergey2

  • Давно я тут
  • 651
  • 15 / 1
Re: Вывести в материале значения из БД
« Ответ #17 : 08.10.2010, 17:02:36 »
А..ну тогда чесно говоря не подскажу...
И помоему проще не воротить такую кучу файлов, а добавить в administrator\components\com_content\models\article.xml в раздел params это:
Код: xml
		<param name="my_element" type="list" label="My Element">
<option value="0">value 1</option>
<option value="1">value 2</option>
<option value="2">value 3</option>
</param>
мне это для каждого материала нужно :(

Тогда остается только вариант с "конвертацией" массива в одну переменную в джаваскрипте.
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Re: Вывести в материале значения из БД
« Ответ #18 : 08.10.2010, 17:09:47 »
мне это для каждого материала нужно :(

И что? твой параметр появится рядом с Псевдоним автора, Уровень доступа, Дата создания и тдд.. они же в каждом материале есть, верно?
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

Sergey2

  • Давно я тут
  • 651
  • 15 / 1
Re: Вывести в материале значения из БД
« Ответ #19 : 08.10.2010, 17:15:08 »
И что? твой параметр появится рядом с Псевдоним автора, Уровень доступа, Дата создания и тдд.. они же в каждом материале есть, верно?
как там одновременно выбирать несколько значений?
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Re: Вывести в материале значения из БД
« Ответ #20 : 08.10.2010, 17:47:21 »
в Joomla нет такой фишки. нужно дописывать самому. но это не сложно. береш за основу list( libraries/joomla/html/elemets/list.php вродебы...)
Кидаешь в administrator\components\com_content\elements, переименовываешь в скажем multylist. Далее внутри тоже все переименовываешь в multylist, и JHTML::_('select.generic'...) или как оно там.. добавляешь еще атрибуты multiple="multiple" size="10". Вот и усе. в xml'ке вместо list указываешь тип multylist

верней multilist
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

Sergey2

  • Давно я тут
  • 651
  • 15 / 1
Re: Вывести в материале значения из БД
« Ответ #21 : 08.10.2010, 19:28:54 »
в Joomla нет такой фишки. нужно дописывать самому. но это не сложно. береш за основу list( libraries/joomla/html/elemets/list.php вродебы...)
Кидаешь в administrator\components\com_content\elements, переименовываешь в скажем multylist. Далее внутри тоже все переименовываешь в multylist, и JHTML::_('select.generic'...) или как оно там.. добавляешь еще атрибуты multiple="multiple" size="10". Вот и усе. в xml'ке вместо list указываешь тип multylist

верней multilist
мда. Пока решил вопрос через скрипт на джаваскрипт, который перед сохранением, "собирает" значения в одно поле. Потом, перед выдачей пользователю, на PHP распарсиваю обратно :)
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как вывести подобное меню?

Автор kelevra

Ответов: 3
Просмотров: 3386
Последний ответ 26.06.2016, 23:28:34
от kelevra
Как в title вывести дополнительное поле из БД

Автор Sergey2

Ответов: 2
Просмотров: 2341
Последний ответ 30.09.2010, 04:06:01
от Sergey2