Новости Joomla

Quantum Manager нужен сообществу, а автору нужна ваша поддержка!

Quantum Manager нужен сообществу, а автору нужна ваша поддержка!Файловый менеджер Quantum — одно...

Файловый менеджер Quantum — одно из самых популярных решений для Joomla, созданное разработчиком из сообщества Joomla, Дмитрием Цымбалом (@tsymbalmitia). Он делает Quantum удобным, безопасным и современным, обновляет его, исправляет уязвимости и отвечает пользователям — всё это в свободное от основной работы время.

Теперь настал момент для следующего шага: развитие проекта требует больше времени и ресурсов.

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

chikvito

  • Захожу иногда
  • 60
  • 2 / 0
я дописываю одни компонент и стоит задача вывести информацию о авторе объявления. по дефолту у меня есть id этого автора. имя, почту можно вытянуть из $user. а полная информация о пользователе записывается в $contact, то есть телефон, адрес, сайт и т.п.
как получить к ней доступ? id то разные у $user и $contact
*

Aventurier

  • Захожу иногда
  • 127
  • 16 / 0
Под user и contact имеются в виду jos_users и jos_contact, я правильно понял?
*

chikvito

  • Захожу иногда
  • 60
  • 2 / 0
*

Aventurier

  • Захожу иногда
  • 127
  • 16 / 0
Тогда вопрос к вам - если вы писали расширение, то по какому принципу вы вводите данные в таблицу jos_contact, такой таблицы по дефолту нет, то есть вы ее создавали?
*

chikvito

  • Захожу иногда
  • 60
  • 2 / 0
я не сам пишу расширение, а дописываю jea (joomla estate agency). но данные в jos_contact_details я ввел в админке: создал несколько пользователей, и в компоненте контактов ввел нужную информацию и привязал контакты к созданным ранее юзерам. все, информация уже в базе. теперь вопрос как ее оттуда достать и вывести в нужном компоненте?
*

Aventurier

  • Захожу иногда
  • 127
  • 16 / 0
Ааааа, так бы и сказали что это таблица jos_contact_details, а то непонятно же. В этой таблице есть ячейка user_id - к ней и привязывайтесь
*

chikvito

  • Захожу иногда
  • 60
  • 2 / 0
не выходит.
получается у меня есть id юзера - это переменная created_by. из нее я получаю доступ к jos_users, вот таким путем:

  <?php if (is_numeric($this->row->created_by)): ?>
        <?php $agent =& JFactory::getUser($this->row->created_by); ?>

и далее могу вывести информацию которая хранится в юзерс, а это имя, почта. а нужная мне информация уже записана в jos_contact_details. я так понимаю мне нужно переформулировать запрос чтобы брать информацию из jos_contact_details. но как это сделать? ))
*

Aventurier

  • Захожу иногда
  • 127
  • 16 / 0
Сделать запрос в БД в таблицу jos_contact_details и указать по какому параметру выбирать оттуда строку - по user_id, который равен вашей переменной $this->row->created_by
Поищите в сети - там есть указания как делаются такие запросы.
*

chikvito

  • Захожу иногда
  • 60
  • 2 / 0
нагуглил один пример:
       
$db =& JFactory::getDBO();
$sql = "SELECT * FROM  #__contact_details";
$result =  $db->loadResultArray(5);
foreach ($result as  $row)
{
echo($row."<br>");
}

но он почему-то опять таки берет данные из jos_users. вобще не могу понять чего это, я же указал в какой ветке искать
*

Aventurier

  • Захожу иногда
  • 127
  • 16 / 0
$result =  $db->loadResultArray(5);
Не могу понять что за 5 в скобках
$result =  $db->loadResultArray();
*

chikvito

  • Захожу иногда
  • 60
  • 2 / 0
5 строка таблицы. тоесть именно это форма выводит 5й параметр таблицы jos_users, а именно переменную группы пользователя. но почему именно юзерс, я не понимаю. даже если удалить строку поиска $sql = "SELECT * FROM  #__contact_details"; всеравно в итоге выводится переменный из юзерс

может я неправильно запрос написал?
*

nixsystem

  • Захожу иногда
  • 207
  • 10 / 0
Если в таблицах jos_users и jos_contact_details есть данные принадлежащие одному объекту (в данном случае пользователю) то толжно быть поле по которому эти данные связаны (связь один ко многим). Вот по этому полю можно вытащить.
Если этой связи между таблицами нет - то никак это не вытащить, потому что невозможно будет установить какому user'у из jos_users какой contact из jos_contact_details соответствует.

За эту связь как раз и отвечает поле user_id. Чтобы получить искомые данные нужно выполнить следующий запрос
Код: sql
SELECT * FROM  #__contact_details WHERE user_id = 48
В контексте Joomla это будет выглядеть так
Код: php
//$user_id - содержит id нужного пользователя полученный из jos_users
$db = JFactory::getDBO();
$sql = "SELECT * FROM  #__contact_details WHERE user_id = ".$user_id;
$result =  $db->loadResultArray;
foreach ($result as  $row)
{
echo($row."<br>");
}
Этот код построчно выведет все контакты пользователя, если такой контакт не один.
*

Aventurier

  • Захожу иногда
  • 127
  • 16 / 0
Да, а я совсем не заметил что у вас WHERE отсутствует, прошу извинить, еще опыта маловато. :)
*

chikvito

  • Захожу иногда
  • 60
  • 2 / 0
спасибо, код работает, но всеравно информация берется из jos_users и поле "$sql = "SELECT * FROM  #__contact_details WHERE user_id = ".$user_id;" воообще игнорируется. даже без него выдается тот же результат, из джос_юзерс.

как можно проследить как работает запрос? или может это у меня на странице где-то ошибка? или компонент изначально кривой?
*

nixsystem

  • Захожу иногда
  • 207
  • 10 / 0
Конкретный пример запроса и кода его сопровождающего приведите пожалуйста, тогда будет видно что откуда - куда и почему.
*

Lex

  • Завсегдатай
  • 1615
  • 274 / 1
$db = JFactory::getDBO();
$sql = "SELECT * FROM  #__contact_details WHERE user_id = ".$user_id;
$db->setQuery($sql);
$result =  $db->loadResultArray;
foreach ($result as  $row)
{
var_dump($row);
}
Жизнь заставила учиться.
В личке на вопросы не отвечаю.
*

chikvito

  • Захожу иногда
  • 60
  • 2 / 0
именно с $db->setQuery($sql); выдает ошибку Warning: Invalid argument supplied for foreach()
еще у одного человека та же самая беда с этим компонентом. я делаю вывод, значит где-то есть какой-то глобальный параметр, который задает этот путь по умолчанию, откуда берутся потом данные (в данном случае это джос_юзерс). придется перелопатить весь компонент.
на что обратить внимание? я прав в теории о глобальном параметре?
*

Lex

  • Завсегдатай
  • 1615
  • 274 / 1
Да какой параметр. sql-запрос неправильный. Не вытаскивает данные из базы. Почему сам выясняй. Отладь запрос на чем нибудь. Инструментов для этого куча.
Жизнь заставила учиться.
В личке на вопросы не отвечаю.
*

chikvito

  • Захожу иногда
  • 60
  • 2 / 0
подскажи пожалуйста, как отладить, что за инструменты?
*

Lex

  • Завсегдатай
  • 1615
  • 274 / 1
Жизнь заставила учиться.
В личке на вопросы не отвечаю.
*

Aventurier

  • Захожу иногда
  • 127
  • 16 / 0
$db = &JFactory::getDBO();
 $db->setQuery('SELECT * FROM #__contact_details WHERE user_id = '.$user_id);
 $article_id = $db->loadObjectList();
 или
 $article_id = $db->loadResultArray();

Надеюсь не ошибся
*

Aventurier

  • Захожу иногда
  • 127
  • 16 / 0
Кстати, может я упустил, откуда взялась переменная $user_id ? У вас вроде $this->row->created_by
*

chikvito

  • Захожу иногда
  • 60
  • 2 / 0
отладка и вправду помогла, у меня два лишних пробела было в запросе))))

Код
$db->setQuery('SELECT * FROM #__contact_details WHERE user_id = '.$user_id);

а нужно было
Код
 user_id='.$user_id);

всем спасибо за помощь)))
« Последнее редактирование: 03.04.2012, 04:59:53 от chikvito »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

модуль Newsflash: как вывести дату?

Автор joomloid

Ответов: 5
Просмотров: 3664
Последний ответ 03.04.2019, 12:25:27
от pH43
Как вывести все категории всех разделов на одной странице?

Автор genius

Ответов: 4
Просмотров: 2298
Последний ответ 22.01.2019, 08:38:30
от genius
Как вывести список новых статьи?

Автор maxo127

Ответов: 4
Просмотров: 2464
Последний ответ 16.06.2018, 02:44:50
от maxo127
Вопрос о правильности разметки тегами на странице

Автор dpy1995

Ответов: 10
Просмотров: 6411
Последний ответ 09.01.2018, 12:49:25
от kungurskiy
Появление элемента на странице которого не должно быть - откуда?

Автор sergey113

Ответов: 1
Просмотров: 1750
Последний ответ 29.03.2016, 02:08:24
от sergey113