Как работать с полями Community Builder?

Тема в разделе "Программирование", создана пользователем Zzet, 11.09.2010.

  1. Offline

    Zzet Недавно здесь

    Регистрация:
    11.09.2010
    Сообщения:
    7
    Симпатии:
    0
    Пол:
    Мужской
    Создал свою вкладку в Community Builder и в ней два поля, формата Date. Пользователь, зарегистрировавшись, заполняет эти поля.

    Мне нужно написать модуль, который берет из базы эти данные и работает с ними. Я не силен в php, учусь, пытаюсь разобраться. В сети много инфы как работать с данными, теоретически я знаю как выполнить мою задачу, но я не могу сделать самого простого - получить эти данные из базы!

    Помогите, пожалуйста, дайте образец рабочего кода, который получает данные из полей описаных выше и, например, вычитает первую дату из второй, а затем выводит разницу? (дальше я бы уже сам разобрался)
     
  2.  
  3. omfgpanda
    Offline

    omfgpanda Недавно здесь => Cпециалист <=

    Регистрация:
    22.01.2008
    Сообщения:
    673
    Симпатии:
    53
    Пол:
    Мужской
    Надо собирать вас всех в кучу и сжигать на костре )))) шучу )))) только что же была тема, там разбирал работу с СВ. По написанию плагинов рекомендую прочесть доки с официального сайта.
     
    Последнее редактирование модератором: 31.03.2014
  4. Offline

    Zzet Недавно здесь

    Регистрация:
    11.09.2010
    Сообщения:
    7
    Симпатии:
    0
    Пол:
    Мужской
    Я читал ту тему. В ней еще есть такие слова: "Думаю, что вопросов будет очень много. Рекомендую учить матчасть, но если в чем то не разберетесь - пишите". Вот и написал что мне непонятно :(

    Этот код:

    <?php
    defined('_JEXEC') or die('Direct Access to this location is not allowed.');

    $user = JFactory::getUser();
    print "\n Текущий пользователь \n";

    class ModMyHelper

    {
    /**
    * Returns a list of post items
    */
    public function getItems($userCount)
    {
    // get a reference to the database
    $db = &JFactory::getDBO();

    // get a list of $userCount randomly ordered users
    $query = 'SELECT a.name FROM `#__users` AS a LIMIT ' . $userCount . '';

    $db->setQuery($query);
    $items = ($items = $db->loadObjectList())?$items:array();

    return $items;

    } //end getItems

    } //end SimplestForumLatestPostsHelper

    foreach ($user as $key => $value) {
    if (is_string($value)) {
    print "<p> Свойство пользователя $key = $value</p>\n";
    } else {
    print "<p> Свойство $key - это не строка</p>\n";
    }
    }
    // - мой код
    // - мой код
    ?>

    Вроде выводит все о текущем юзере, но не выводит поля которые я создал в стартопике :( Хотя, по идее, эти поля относятся именно к текущему пользователю.
     
    Последнее редактирование: 12.09.2010
  5. omfgpanda
    Offline

    omfgpanda Недавно здесь => Cпециалист <=

    Регистрация:
    22.01.2008
    Сообщения:
    673
    Симпатии:
    53
    Пол:
    Мужской
    минутку, вы понимаете что вы делаете ? Вы получаете объект текущего пользователя $user, он у вас 1, затем вы пытаетесь его перебрать в цикле ... нах ??? ведь он же у вас 1 !!! По поводу ваших вновь созданных полей - эти поля вы создаете с помощью СВ и соответственно они лежат в таблице СВ, если не ошибаюсь - "jos_community". Делайте перекрестный запрос и получайте данные.
     
  6. Offline

    Zzet Недавно здесь

    Регистрация:
    11.09.2010
    Сообщения:
    7
    Симпатии:
    0
    Пол:
    Мужской
    Я еще учусь. Не знаю как сделать "перекрестный запрос". Не сочтите за труд, дайте образец рабочего кода, который получает данные из полей описаных выше? (дальше я бы уже сам разобрался)
     
  7. omfgpanda
    Offline

    omfgpanda Недавно здесь => Cпециалист <=

    Регистрация:
    22.01.2008
    Сообщения:
    673
    Симпатии:
    53
    Пол:
    Мужской
    Код (PHP):
    1. $user = JFactory::getUser();
    2.  
    3. $query = "SELECT * FROM jos_community where user_id = {$user["id"]}";
    4. $db = &JFactory::getDBO();
    5. $db->setQuery($query);
    6. $items = $db->loadObjectList();
    7. echo "<pre>"; print_r($items); print_r($user); echo "</pre>";


    зайдите в вашу СУБД и посмотрите, если в БД такая таблица "jos_community", если есть, то все будет работать
     
    Zzet нравится это.
  8. Offline

    Zzet Недавно здесь

    Регистрация:
    11.09.2010
    Сообщения:
    7
    Симпатии:
    0
    Пол:
    Мужской
    В БД такой записи нет, там есть rus_comprofiler_fields и в нем есть нужные поля. Я перепробовал все записи из БД, но всегда результат работы вашего скрипта такой:

    Текущий пользователь
    Fatal error: Cannot use object of type JUser as array in Z:\home\localhost\www\my_site\ru\modules\mod_my\helper.php on line 7

    в седьмой строке скрипта это:
    $query = "SELECT * FROM jos_community where user_id = {$user["id"]}";

    Моих знаний не хватает чтобы понять в чем ошибка.
    Я пробовал тут менять jos_community на rus_comprofiler_fields и другие, но всегда ошибка.
     
    Последнее редактирование: 12.09.2010
  9. omfgpanda
    Offline

    omfgpanda Недавно здесь => Cпециалист <=

    Регистрация:
    22.01.2008
    Сообщения:
    673
    Симпатии:
    53
    Пол:
    Мужской
    просто я ввел вас в заблуждение )))
    Код (PHP):
    1. $query = "SELECT * FROM rus_comprofiler_fields where user_id = {$user->id}";
     
  10. Offline

    Zzet Недавно здесь

    Регистрация:
    11.09.2010
    Сообщения:
    7
    Симпатии:
    0
    Пол:
    Мужской
    Спасибо. Теперь выдает все поля и желаемые в том числе... Буду разбираться как правильно вычленить только то что нужно :)
     

Поделиться этой страницей

Загрузка...