Вывод полей из Профиль пользователя ?

  • 19 Ответов
  • 3449 Просмотров

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

*

Magl

  • ***
  • 85
  • 3
Доброго времени суток!
Такой вопрос как можно по выводить значение полей пользователя которые были добавлены в "Профиль пользователя" ?
Я понимаю что можно написать запросы к базе, но в этом я не силён и думаю должен быть способ по проще.
Подскажите, поделитесь идеями или решением.
Спасибо !

*

Fedor Vlasenko

  • ********
  • 3800
  • 698
  • Все начинается с Value
Код: php-brief
<?php
$user = JFactory::getUser();
var_dump($user);
//Здесь ваши данные
?>

или могут быть здесь
Код: php-brief
<?php
jimport( 'joomla.user.helper' );
$userProfile = JUserHelper::getProfile();
print_r($userProfile); //глянь что здесь есть
?>

*

Magl

  • ***
  • 85
  • 3
Что то не получилось
У меня задача стоит так, надо вывести данные всех пользователей из определённого региона.
Регионы у пользователей добавляются как дополнительное поле "Профиль пользователя" таблица jos_user_profiles
Такой вопрос как вывести всех пользователей у которых в таблице jos_user_profiles поле profile_value равно id региона например 60

Если короче я в выпадающем списке выбираю регион, а мне выводит из таблицы jos_users почту и из таблицы jos_user_profiles телефон всех пользователь в этом регионе

Дайте хотя бы пример как вывести почту всех пользователь из таблицы  jos_users
И телефон всех пользователей из  jos_user_profiles

Спасибо большое !

*

Magl

  • ***
  • 85
  • 3
Код: php-brief
<?php
$user = JFactory::getUser();
var_dump($user);
//Здесь ваши данные
?>

или могут быть здесь
Код: php-brief
<?php
jimport( 'joomla.user.helper' );
$userProfile = JUserHelper::getProfile();
print_r($userProfile); //глянь что здесь есть
?>

Дайте пример как вывести почту всех пользователь из таблицы  jos_users
И телефон всех пользователей из  jos_user_profiles
Спасибо

*

Fedor Vlasenko

  • ********
  • 3800
  • 698
  • Все начинается с Value
Код: php-brief
<?php
$region_id=60;
jimport( 'joomla.user.helper' );
$db = JFactory::getDBO();
$sql = "SELECT a.user_id, b.email FROM #__user_profiles as a, #__users as b ";
$sql .= "WHERE a.profile_key='profile.region' and a.profile_value='\"$region_id\"' and b.id=a.user_id";
$db->setQuery($sql);
$list = $db->loadObjectList();
foreach($list as $user)
{
$userProfile = JUserHelper::getProfile($user->user_id);
echo $user->email;
echo $userProfile->profile['phone'];
}
?>
Все e-mail
Код: php-brief
<?php
$db = JFactory::getDBO();
$sql = "SELECT email FROM #__users";
$db->setQuery($sql);
$list = $db->loadObjectList();
foreach($list as $user)
{
echo $user->email;
}
?>
Все телефоны
Код: php-brief
<?php
$db = JFactory::getDBO();
$sql = "SELECT profile_value FROM #__user_profiles WHERE profile_key='profile.phone'";
$db->setQuery($sql);
$list = $db->loadObjectList();
foreach($list as $user)
{
echo str_replace('"', '',$user->profile_value);
}
?>

*

Magl

  • ***
  • 85
  • 3
Все телефоны
Код: php-brief
<?php
$db = JFactory::getDBO();
$sql = "SELECT profile_value FROM #__user_profiles WHERE profile_key='profile.phone'";
$db->setQuery($sql);
$list = $db->loadObjectList();
foreach($list as $user)
{
echo str_replace('"', '',$user->profile_value);
}
?>

Спасибо Огромное Работает
Только вот проблема есть такая
некоторые данные выводит вот так "\u0418\u0432\u0430\u043d\u043e\u0432\u0438\u0447 "
На форуме видел сообщение "http://joomlaforum.ru/index.php?topic=241816.0" но не понял в чём решение кроме того что менять хостера
но данные уже выводятся в таком виде как это можно исправить ?

*

Magl

  • ***
  • 85
  • 3
Подскажите как можно выводить данные из "Профиль пользователя" что бы они небыли закодированы в таком виде "\u0418\u0432\u0430\u043d\u043e\u0432\u0438\u0447" ?
Спасибо

*

Fedor Vlasenko

  • ********
  • 3800
  • 698
  • Все начинается с Value
Код: php-brief
echo json_decode('"\u0418\u0432\u0430\u043d\u043e\u0432\u0438\u0447"');
//Иванович
Или так может
Код: php-brief
<?php
$db = JFactory::getDBO();
$sql = "SELECT profile_value FROM #__user_profiles WHERE profile_key='profile.phone'";
$db->setQuery($sql);
$list = $db->loadObjectList();
foreach($list as $user)
{
echo  json_decode($user->profile_value);
}
?>

*

Magl

  • ***
  • 85
  • 3
Спойлер
[свернуть]

Спасибо работает НО есть проблема в базе есть и не закодированы элементы
и получается там что если закодировано оно выводит, а если не закодировано то просто пусто, как от такого избавиться ?
Может как-то сделать проверку на то закодирован элемент или нет ?

*

Fedor Vlasenko

  • ********
  • 3800
  • 698
  • Все начинается с Value
самое простое наверно так
Код: php-brief
$data =  json_decode($user->profile_value);
echo ($data ? $data : str_replace('"', '',$user->profile_value));

*

Magl

  • ***
  • 85
  • 3
самое простое наверно так
Код: php-brief
$data =  json_decode($user->profile_value);
echo ($data ? $data : str_replace('"', '',$user->profile_value));

Огромное СПАСИБО ! Работает !
Вы меня выручили очень сильно !

*

benshee

  • **
  • 10
  • 0
Ребят, а в каком файле то добавлять все это ? )

*

MetaSpirit

  • ******
  • 1379
  • 106
  • R.A.S.Lab[.org]
В плагине профилей или там где нужно, тоже можно вывести.
R.A.S.Lab[.org]: ZOOvirtue - корзина для ZOO, Яндекс.Карты для ZOO, ItemPanes - табы для ZOO, ZOOlendar - календарь для ZOO  и др.
Создание расширений для YOOtheme ZOO на заказ. Становитесь в очередь.

Код: php-brief
<?php
$user = JFactory::getUser();
var_dump($user);
//Здесь ваши данные
?>

или могут быть здесь
Код: php-brief
<?php
jimport( 'joomla.user.helper' );
$userProfile = JUserHelper::getProfile();
print_r($userProfile); //глянь что здесь есть
?>
Извиняюсь за свою безграмотность, но все таки вопрос задам.. нужно вывести в поле номер квартиры из поля профиля залогинившегося пользователя.. вывод поля я сделал, но он выводит первую попавшуюся квартиру в таблице, а не данного пользователя. Всю голову уже сломал

*

Genrih

  • **
  • 13
  • 0

или могут быть здесь
Код: php-brief
<?php
jimport( 'joomla.user.helper' );
$userProfile = JUserHelper::getProfile();
print_r($userProfile); //глянь что здесь есть
?>

Выдало:
JObject Object ( [_errors:protected] => Array ( ) [id] => 566 [profile] => Array ( [address1] => [address2] => [city] => Краснодар [region] => [country] => [postal_code] => [phone] => [website] => [favoritebook] => [aboutme] => [dob] => ) )

как отсюда вывести [city] ?

*

Shustry

  • *****
  • 6426
  • 733
  • Рисую дизайны
Наверное так:
Код: php
$userProfile[profile][city]
Бесплатно консультирую по дизайну и вёрстке (только в личку сердечно прошу не стучать). Платно делаю дизайн, вёрстку и темплейты для Joomla. Работаю только за деньги. За большие. И долго. Но качественно.
---------------------------------------------------------
xmpp:joomla@conference.jabber.ru - наша конфа!

*

Genrih

  • **
  • 13
  • 0
Наверное так:
Код: php
$userProfile[profile][city]

чет не выходит, выдало следующее:

JObject Object ( [_errors:protected] => Array ( ) [id] => 0 )
Notice: Use of undefined constant profile - assumed 'profile' in .../index.php on line 168

Notice: Use of undefined constant city - assumed 'city' in .../index.php on line 168

Fatal error: Cannot use object of type JObject as array in .../index.php on line 168

*

etoOH

  • *
  • 1
  • 0
самое простое наверно так
Код: php-brief
$data =  json_decode($user->profile_value);
echo ($data ? $data : str_replace('"', '',$user->profile_value));

Здравствуйте! Подскажите пожалуйста, как этот код объединить с кодом из другого Вашего поста:
Спойлер
[свернуть]

Его использую в автозаполнении полей формы RSForm. Необходимо убрать кавычки и декодировать данные из профиля.


Есть ещё вопрос из этой же ветки.  Я воспользовался Вашим плагином выбора групп при регистрации, дабы упростить процесс, оставив всего два поля, - Имя и почту. Хотелось бы, чтобы перед заполнением формы не приходилось авторизовываться. в Форме есть одно из обязательных полей - е-маил. Уведомление администратору настроено таким образом, что передаёт user_id в скрытом поле, по которому предполагается вести статистику отправленных форм. Собственно есть такое пожелание, чтобы перед записью в базу, поле е-маил сравнивалось с базой пользователей, при наличии такого пользователя вставлялось в скрытое поле user_id  для отправки администратору и дописывалось в базу отправленных форм(идеально - на лету, то есть вписав в начале формы почту, доступные данные вносились бы в поля).  Хотя из соображений безопасности, думаю кроме id ничего не нужно автозаполнять...

Joomla 3.2.3, RSForm 1.4.0 rev.48

Коды в полях RSForm


 
Спойлер
[свернуть]


« Последнее редактирование: 11.05.2014, 16:38:29 от etoOH »

Код: php-brief
echo json_decode('"\u0418\u0432\u0430\u043d\u043e\u0432\u0438\u0447"');
//Иванович
Или так может
Код: php-brief
<?php
$db = JFactory::getDBO();
$sql = "SELECT profile_value FROM #__user_profiles WHERE profile_key='profile.phone'";
$db->setQuery($sql);
$list = $db->loadObjectList();
foreach($list as $user)
{
echo  json_decode($user->profile_value);
}
?>
Подскажите пожалуйста что нужно подправить в этом коде чтобы выводило информацию только конкретного пользователя по id, запутался совсем. Этот код работает но выводится вся информация полностью.

Уточню вопрос:
Cделал так:
 <?php
$db = JFactory::getDBO();
$sql = "SELECT profile_value FROM #__user_profiles WHERE profile_key='profile.address1'";
$db->setQuery($sql);
$list = $db->loadObjectList();
foreach($list as $user)

{
$data =  json_decode($user->profile_value);   
echo ($data ? $data : str_replace('"', '',$user->profile_value));
}
?>
В админке есть таблица с информацией о пользователе, хочу в нее вывести данные из профиля (дополнительные поля в плагине "профиль пользователя", конкретно интересует поле address1)
вышеуказанный код работает но он напротив каждого пользователя выводит данные всех пользователей.
Как правильно прописать код чтобы каждому пользователю из списка подставлялась соответствующая информация из поля address1.