Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Как вывести значения из dle_users?

Как вывести значения из dle_users?


     28.06.2015    Все вопросы » Общие вопросы по PHP    3279

вопрос
Всем привет! Интересует такой вопрос, как вывести определенные значения из базы данных в userinfo.tpl либо куда-то в отдельный файл.
Моя задумка в том, что-бы сделать простенькую инвайт регистрацию без каких либо наворотов. В dle_users есть столбец invite - оно заполняется пользователем при регистрации указывая user_id. Получается зарегистрировалось пять человек все указали invite="12" мне же нужно вывести такой запрос (SELECT name FROM dle_users WHERE invite="12")
Получается, что этот запрос выводит Имена тех людей которые указали 12 в поле invite.
Мне надо что бы в запросе число 12 он брал от пользователя который это смотрит т.е брал User_Id от пользователя который залогинен на сайте. Как-то так (SELECT name FROM dle_users WHERE invite="$user_id") .
Прошу вашей помощи, заранее благодарен.

Ответа пока нет


19 комментариев

LazyDev
PHP-developer

LazyDev - 28 июня 2015 11:06 -

может
$member_id['user_id']
?

Мой блог: LazyDev.pro

Помогаю с решением проблем на платной основе.

Smerch
Юзер

Smerch - 28 июня 2015 11:12 -

Суть в том, что я не знаю где в profile.php указывать данный запрос и как организовать его вывод (

LazyDev
PHP-developer

LazyDev - 28 июня 2015 12:53 -

Вставить этот код :
$invite_name = $db->query("SELECT name FROM ". PREFIX ."_users WHERE invite='$member_id[user_id]'");
$count_rows = $invite_name->num_rows;

if($count_rows > 0)
{
while( $row_invite = $db->get_row($invite_name) )
{
$tpl->set('{invite_name}', strip_tags(stripslashes($row_invite['name'])));
}
}
else
{
$tpl->set('{invite_name}', "");
}
Перед :
if ( ($row['lastdate'] + 1200) > $_TIME ) {
В userinfo.tpl использовать тег {invite_name}

Мой блог: LazyDev.pro

Помогаю с решением проблем на платной основе.

Smerch
Юзер

Smerch - 28 июня 2015 13:19 -

Fatal error: Using $this when not in object context in \engine\modules\profile.php on line 474

Очень странно, если никто не указывает user_id человека то отображается нормально, а как только вносишь в базу выдает эту ошибку.(

LazyDev
PHP-developer

LazyDev - 28 июня 2015 16:45 -

Smerch, исправил код, замените его.

Мой блог: LazyDev.pro

Помогаю с решением проблем на платной основе.

Smerch
Юзер

Smerch - 28 июня 2015 16:55 -

Замечательно! Очень вам благодарен! Работает, но вот только выдает только один "Name" а в базе их 5. Как можно это побороть?

LazyDev
PHP-developer

LazyDev - 28 июня 2015 20:31 -

Smerch,
$invite_name = $db->query("SELECT name FROM ". PREFIX ."_users WHERE invite='$member_id[user_id]'");
замените на :
$invite_name = $db->query("SELECT name FROM ". PREFIX ."_users WHERE invite='$row[invite]'");

Мой блог: LazyDev.pro

Помогаю с решением проблем на платной основе.

Smerch
Юзер

Smerch - 28 июня 2015 14:33 -

Ничего не понимаю, весь интернет перерыл, но толкового решения найти не могу. Помогите пожалуйста.

FastFud
Юзер

FastFud - 28 июня 2015 17:21 -

WHERE invite='{$member_id['user_id']}'");

Smerch
Юзер

Smerch - 28 июня 2015 17:23 -

Не получилось(

FastFud
Юзер

FastFud - 28 июня 2015 17:32 -

В profile.php добавьте строку:
$tpl->set('{invite}', $row['invite'])
Создаете новый модуль с кэшированием. Потом модуль подключать будете так
{include file="engine/modules/invite.php?invite={invite}"}
в запросе так
WHERE invite='$invite'")

Smerch
Юзер

Smerch - 28 июня 2015 17:39 -

Я запутался и теперь вообще ничего не понимаю :(( Где, что вставлять, не соображаю... 5 часов пляшу на одном месте.

FastFud
Юзер

FastFud - 28 июня 2015 17:49 -

Создайте файл invite.php и вставьте туда это:
<?php
if( ! defined( 'DATALIFEENGINE' ) ) {
    die( "Hacking attempt!" );
}

$invite = dle_cache('invite', $config['skin']);

if (!$invite){
    $invite_name = $db->query("SELECT name FROM ". PREFIX ."_users WHERE invite='$invite'");

    $temp = ( !isset($temp) ) ? 'invite' : $temp;
    $tpl->load_template( $temp . '.tpl' );
    
    while( $row_invite = $db->get_row($invite_name) ){
        $tpl->set('{invite_name}', strip_tags(stripslashes($row_invite['name'])));
        
        if( $row_invite['name'] ) {
            $tpl->set( '[invite]', "" );
            $tpl->set( '[/invite]', "" );
            $tpl->set( '{invite}', strip_tags(stripslashes($row_invite['name'])) );
            $tpl->set_block( "'\\[not-invite\\](.*?)\\[/not-invite\\]'si", "" );
        
        } else {
            $tpl->set_block( "'\\[invite\\](.*?)\\[/invite\\]'si", "" );
            $tpl->set( '{invite}', "" );
            $tpl->set( '[not-invite]', "" );
            $tpl->set( '[/not-invite]', "" );
        }
        
    }
    
    $tpl->compile( 'invite' );
    $invite = $tpl->result['invite'];    
    $tpl->clear();
    
    create_cache('invite', $invite);
}
echo $invite;
?>
сам файл поставьте в /engine/modules. Там же найдите profile.php и откройте его. Найдите строку
$tpl->set( '{usertitle}', stripslashes( $row['name'] ) );
после нее добавьте
$tpl->set( '{invite}', $row['invite'] );
В userinfo.tpl подключаете модуль так:
{include file="engine/modules/invite.php?invite={invite}&temp=template_name"}
В шаблоне которого вы укажите в строке подключения модуля, будут доступны теги:
[invite]{invite}[/invite][not-invite]Not-invite[/not-invite]

FastFud
Юзер

FastFud - 28 июня 2015 18:01 -

Строку
$tpl->set('{invite_name}', strip_tags(stripslashes($row_invite['name'])));
которая идет после
while( $row_invite = $db->get_row($invite_name) ){
удалите.

Smerch
Юзер

Smerch - 28 июня 2015 18:17 -

Попробовал это всё сделать.
Создал файл, скопировал туда то, что сказали.
В profile.php добавил
$tpl->set( '{invite}', $row['invite'] );

В userinfo.tpl прописал Include
Удалил то, что сказали.
Вставил тег {invite} в удобное место userinfo.tpl
Теперь отображает просто значение которое введено в столбце invite у того кто залогинен, а не выводит список пользователей у которых написано в invite='2'.

Идея такова, люди при регистрации вводят так называемый invite, а именно ID пользователя из dle_users. Он откладывается в базе dle_users (invite). Потом я хочу разместить список приглашенных пользователей в профиле. К примеру: Admin заходит в свой профиль, его User_Id="2" , посылается запрос в базу на вывод имени в dle_users при условии что Invite="user_id". И выводит name в строчку через запятую. У меня очень плохо получается объяснять(

FastFud
Юзер

FastFud - 28 июня 2015 18:21 -

$invite_name = $db->query("SELECT name FROM ". PREFIX ."_users WHERE invite='$invite'");
замените на
$invite_name = $db->query("SELECT name FROM ". PREFIX ."_users WHERE invite='$invide_id'");
модуль подключать так
{include file="engine/modules/invite.php?invite_id={invite}&temp=template_name"}

Smerch
Юзер

Smerch - 28 июня 2015 18:32 -

Не получается реализовать :( По сути, тот код который был изначально было то, что нужно, просто он выводил только одно имя пользователя, а их там 5

Версия движка: 10.4

FastFud
Юзер

FastFud - 28 июня 2015 18:39 -

В /engine/modules/profile.php после
$tpl->set( '{invite}', $row['invite'] );
добавить
$tpl->set( '{user_id}', $row['user_id'] );

Модуль подключать так
{include file="engine/modules/invite.php?invite_id={user_id}&temp=template_name"}
+ очистите кэш

Smerch
Юзер

Smerch - 28 июня 2015 18:48 -

Вообще ничего не изменилось он мне так и выдает значение invite, но не Name (((

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх