LiveInternetMail.ru
Форум русской поддержки Joomla!® CMS
26.05.2012, 20:51:17 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 1.7 FAQ Joomla 1.5 FAQ Joomla 1.0 FAQ Правила форума Новости Joomla Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор Тема: Вывести в материале значения из БД  (Прочитано 1887 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
Sergey2
Давно я тут
****

Репутация: +7/-1
Offline Offline

Сообщений: 347


« : 30.09.2010, 05:55:27 »

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

Репутация: +305/-3
Online Online

Пол: Мужской
Сообщений: 2980



« Ответ #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;
Записан
Sergey2
Давно я тут
****

Репутация: +7/-1
Offline Offline

Сообщений: 347


« Ответ #2 : 30.09.2010, 19:19:29 »

а у меня там должно не одно поле "вылести", а несколько. Как массив получить? Массив я знаю как обработать, а вот с SQL у меня туго Sad
Записан
userxp
Администратор
*******

Репутация: +400/-6
Offline Offline

Пол: Мужской
Сообщений: 3227


Злой и ужасный бармалей


« Ответ #3 : 30.09.2010, 19:42:40 »

Код
$sql = "SELECT id, title, alias FROM #__content WHERE state=1 LIMIT 10";
$db = &JFactory::getDBO();
$db->setQuery( $sql );
$rows = $db->loadAssocList();
 
print_r( $rows );
Записан
Sergey2
Давно я тут
****

Репутация: +7/-1
Offline Offline

Сообщений: 347


« Ответ #4 : 30.09.2010, 19:46:21 »

Код
$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
Практически профи
*******

Репутация: +305/-3
Online Online

Пол: Мужской
Сообщений: 2980



« Ответ #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;
Записан
Sergey2
Давно я тут
****

Репутация: +7/-1
Offline Offline

Сообщений: 347


« Ответ #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
Практически профи
*******

Репутация: +305/-3
Online Online

Пол: Мужской
Сообщений: 2980



« Ответ #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);
Записан
Sergey2
Давно я тут
****

Репутация: +7/-1
Offline Offline

Сообщений: 347


« Ответ #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
Давно я тут
****

Репутация: +7/-1
Offline Offline

Сообщений: 347


« Ответ #9 : 02.10.2010, 01:02:44 »

и последний глупый вопрос. Вот сделал я это все. Наковырял в form.php и в админке. А как теперь сделать так что бы сохранялось это после редактирования материала?
Когда поле в той же таблице как и митериал (ну или в другой таблице), то оно "само" сохраняется. Но у меня там не одно поле, а несколько и сколько конкретно неизвестно. В каком месте все это дело сохраняется? Где ковырять?
Записан
Sergey2
Давно я тут
****

Репутация: +7/-1
Offline Offline

Сообщений: 347


« Ответ #10 : 08.10.2010, 16:04:52 »

А как с массивами работать? Вот поле metadata в таблице _content - это же массив. Как мне сделать такое же поле?
Записан
danik.html
Практически профи
*******

Репутация: +305/-3
Online Online

Пол: Мужской
Сообщений: 2980



« Ответ #11 : 08.10.2010, 16:18:53 »

Это обычное ничем не примечаетьное поле типа text.
Чтобы получить значения из поля metadata:
Код
$params = new JParameter($row->metadata);
echo $params->get('robots');
echo $params->get('author');
чтобы записать:
$params = new JParameter('');
$params->set('author', 'вася');
echo $params->toString();
Записан
danik.html
Практически профи
*******

Репутация: +305/-3
Online Online

Пол: Мужской
Сообщений: 2980



« Ответ #12 : 08.10.2010, 16:20:07 »

Можно сохранять и вытягивать чистый массив, без всяких jparameter. Тут на помощь придут php-функции serialize() и unserialize()
Записан
Sergey2
Давно я тут
****

Репутация: +7/-1
Offline Offline

Сообщений: 347


« Ответ #13 : 08.10.2010, 16:27:28 »

Неее, мне не надо работать с metadata. Я хочу создать вот такую фигню:
При редактировании материала есть выпадающий список:
<select><option ... и т.д.
Собственно с ним я работать научился. Все нормально. Но мне нужно что бы в этом селекте можно было выбрать несколько значений, т.е. уже не одна переменная <select name"my_element" ... а <select name"my_element[]"... вот как этот массив мне сохранить?
Записан
danik.html
Практически профи
*******

Репутация: +305/-3
Online Online

Пол: Мужской
Сообщений: 2980



« Ответ #14 : 08.10.2010, 16:38:55 »

$values = JRequest::getVar('my_element', array(), 'array');
в базу пишем implode('|', $values)

в параметрах модуля это все автоматизировано кстати.
Записан
Sergey2
Давно я тут
****

Репутация: +7/-1
Offline Offline

Сообщений: 347


« Ответ #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
Практически профи
*******

Репутация: +305/-3
Online Online

Пол: Мужской
Сообщений: 2980



« Ответ #16 : 08.10.2010, 16:58:38 »

А..ну тогда чесно говоря не подскажу...
И помоему проще не воротить такую кучу файлов, а добавить в administrator\components\com_content\models\article.xml в раздел params это:
Код
		<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>
Записан
Sergey2
Давно я тут
****

Репутация: +7/-1
Offline Offline

Сообщений: 347


« Ответ #17 : 08.10.2010, 17:02:36 »

А..ну тогда чесно говоря не подскажу...
И помоему проще не воротить такую кучу файлов, а добавить в administrator\components\com_content\models\article.xml в раздел params это:
Код
		<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>
мне это для каждого материала нужно Sad

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

Репутация: +305/-3
Online Online

Пол: Мужской
Сообщений: 2980



« Ответ #18 : 08.10.2010, 17:09:47 »

мне это для каждого материала нужно Sad

И что? твой параметр появится рядом с Псевдоним автора, Уровень доступа, Дата создания и тдд.. они же в каждом материале есть, верно?
Записан
Sergey2
Давно я тут
****

Репутация: +7/-1
Offline Offline

Сообщений: 347


« Ответ #19 : 08.10.2010, 17:15:08 »

И что? твой параметр появится рядом с Псевдоним автора, Уровень доступа, Дата создания и тдд.. они же в каждом материале есть, верно?
как там одновременно выбирать несколько значений?
Записан
danik.html
Практически профи
*******

Репутация: +305/-3
Online Online

Пол: Мужской
Сообщений: 2980



« Ответ #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
Записан
Sergey2
Давно я тут
****

Репутация: +7/-1
Offline Offline

Сообщений: 347


« Ответ #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 распарсиваю обратно Azn
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Рейтинг@Mail.ru Rambler Top100 Powered by SMF 1.1.16 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet