Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

Вывод дополнительной информации рядом с переменной $username как?

Форум для авторов расширений для phpBB. Здесь можно попросить помощи в разработке у коллег.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x/3.3.x | FAQ | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
S3cur1ty
phpBB 1.2.0
Сообщения: 19
Стаж: 7 лет 10 месяцев
Поблагодарили: 1 раз

Вывод дополнительной информации рядом с переменной $username как?

Сообщение S3cur1ty »

Доброго времени суток, в шаблонах есть переменная $username котрая выводит содержимое из БД а именно из таблицы username, так вот, объясните пожалуйста как вывести рядом информацию с соедней таблицы к примеру $username_real? что бы везде на форуме отображался ник + еще дополнительная информация из соседней таблицы. Спасибо.
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 1 месяц
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2752 раза
Контактная информация:

Re: Вывод дополнительной информации рядом с переменной $username как?

Сообщение Sheer »

В шаблонах нет переменной $username. В базе данных нет таблицы username.
Объясните толком, что именно вы хотите сделать. Не к примеру, а конкретно.
Иначе изучайте документацию по MySQL
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
S3cur1ty
phpBB 1.2.0
Сообщения: 19
Стаж: 7 лет 10 месяцев
Поблагодарили: 1 раз

Re: Вывод дополнительной информации рядом с переменной $username как?

Сообщение S3cur1ty »

На форуме выводиться никНейм пользователя. Нужно изменить вывод никнеймов под свои нужды. где находиться запрос на отображение никнейма? я так понимаю здесь где то одна функция которая отвечает за вывод НикНейма. В таблице phpbb_users есть поле username мне нужно в SELECT запросе поменять вывод. что бы никНейм брался не из таблицы phpbb_users а (SELECT idx.name FROM dbname_idx.em0s6_users AS idx WHERE idx.username = u.username) AS username просто база с никнеймами находиться в другом месте а проерка пользователей осуществляеться по логинам. подскажите пожалуйста где перестроить запрос? буду примного благодарен.
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 1 месяц
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2752 раза
Контактная информация:

Re: Вывод дополнительной информации рядом с переменной $username как?

Сообщение Sheer »

А вы не пробовали при написании сообщения воспользоваться правилами грамматики и пунктуации. Ну там запятые поставить, где нужно и так далее?
Я ничего толком не понял из вашей писанины. Только догадываюсь, что вы хотите извлечь информацию из двух разных баз данных.
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
S3cur1ty
phpBB 1.2.0
Сообщения: 19
Стаж: 7 лет 10 месяцев
Поблагодарили: 1 раз

Re: Вывод дополнительной информации рядом с переменной $username как?

Сообщение S3cur1ty »

Отправлено спустя 5 минут 32 секунды:
Смотрите, есть форум, на форуме есть никНеймы. Где то в коде есть SELECT * FROM phpbb_users. который выводит НикНеймы на форуме. Ник пользователя в списке форумов, Никнейм в логинБаре, логин кто создал тему кто отписался в теме, так вот, мне нужно дописать запрос,

Код: Выделить всё

SELECT (SELECT idx.name FROM rust1ru_idx.em0s6_users AS idx WHERE idx.username = u.username) AS username, * FROM phpbb_users.
что бы Никнеймы отображались другие так как они будут находиться в другом месте. сейчас есть форум, у форума есть База Данных в которой находяться родные данные без изминений, так же есть Joomla и есть мост который соеденяет форум и сайт на Joomlе. проверка пользователйе между форумом и сайтом проходит на уровне логина форума и сайта. теперь нужно подцепить НикНеймы сайта на форум.
Последний раз редактировалось S3cur1ty 22.05.2016 15:54, всего редактировалось 1 раз.
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12372
Стаж: 12 лет 7 месяцев
Благодарил (а): 223 раза
Поблагодарили: 3517 раз
Контактная информация:

Re: Вывод дополнительной информации рядом с переменной $username как?

Сообщение Татьяна5 »

Вот теперь понятно о чём речь
Это в includes/functions_content.php. Изменить вывод можно через событие core.modify_username_string
Но запрос выполнять лучше не там, а более глобально, к примеру в core.user_setup (файл phpbb/user.php)
S3cur1ty
phpBB 1.2.0
Сообщения: 19
Стаж: 7 лет 10 месяцев
Поблагодарили: 1 раз

Re: Вывод дополнительной информации рядом с переменной $username как?

Сообщение S3cur1ty »

Вот нашел масив

Код: Выделить всё

	$vars = array(
		'mode',
		'user_id',
		'username',
		'username_colour',
		'guest_username',
		'custom_profile_url',
		'username_string',
		'_profile_cache',
	);
	extract($phpbb_dispatcher->trigger_event('core.modify_username_string', compact($vars)));
Как мне в этот масив добавить дополнительный запрос? что то не понимаю. В user.php вообще лес какой то темный там вообще потерялся не нашел нечего что бы мне показалось нужным.. Помогите пожалйста разобраться. Можно более подробней обхяснить?
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12372
Стаж: 12 лет 7 месяцев
Благодарил (а): 223 раза
Поблагодарили: 3517 раз
Контактная информация:

Re: Вывод дополнительной информации рядом с переменной $username как?

Сообщение Татьяна5 »

Подключиться к событию в своём расширении и выполнить запрос
Расширения - это просто!

Если подключиться к core.modify_username_string, то запрос будет выполняться для каждого ника на странице (может выйти более 130 запросов на страницу темы)

В core.user_setup запрос будет один, но это только для текущего пользователя. Где выводятся чужие ники уже отдельно придётся подключаться, к другим событиям (но при таком подходе запросов всё равно выйдет меньше). В viewtopic.php, к примеру, можно добавить запрос в событие core.viewtopic_get_post_data (точней, там можно модифицировать существующий запрос, не добавляя новый)

В core.user_setup элемент массива $user_data['username'] надо изменить, чтобы поменялся ник залогиненного пользователя
S3cur1ty
phpBB 1.2.0
Сообщения: 19
Стаж: 7 лет 10 месяцев
Поблагодарили: 1 раз

Re: Вывод дополнительной информации рядом с переменной $username как?

Сообщение S3cur1ty »

Не могу найти SELECT в viewtopic.php который бы отвечал за вывод информации по пользователю. Искал viewtopic_get_post_data это оно?

Код: Выделить всё

extract($phpbb_dispatcher->trigger_event('core.viewtopic_get_post_data', compact($vars)));

$sql = $db->sql_build_query('SELECT', $sql_ary);
$result = $db->sql_query($sql);
Отправлено спустя 14 минут 43 секунды:
Я извиняюсь. я не понимаю.
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 1 месяц
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2752 раза
Контактная информация:

Re: Вывод дополнительной информации рядом с переменной $username как?

Сообщение Sheer »

S3cur1ty писал(а): Не могу найти SELECT в viewtopic.php
Это он и есть. Смотрите далее: результаты запроса записываются в массив $rowset_data, имя пользователя в частности в элементе массива

Код: Выделить всё

'username'            => $row['username'], 
Чтобы изменить это значение в расширении, нужно воспользоваться событием core.viewtopic_post_rowset_data

Код: Выделить всё

    /**
    * Modify the post rowset containing data to be displayed with posts
    *
    * @event core.viewtopic_post_rowset_data
    * @var    array    rowset_data    Array with the rowset data for this post
    * @var    array    row            Array with original user and post data
    * @since 3.1.0-a1
    */
    $vars = array('rowset_data', 'row');
    extract($phpbb_dispatcher->trigger_event('core.viewtopic_post_rowset_data', compact($vars)));

    $rowset[$row['post_id']] = $rowset_data; 
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
S3cur1ty
phpBB 1.2.0
Сообщения: 19
Стаж: 7 лет 10 месяцев
Поблагодарили: 1 раз

Re: Вывод дополнительной информации рядом с переменной $username как?

Сообщение S3cur1ty »

Получается запрос у меня будет таким правильно я понял?

Код: Выделить всё

$sql = $db->sql_build_query('SELECT (SELECT idx.name FROM dbnae_idx.em0s6_users AS idx WHERE idx.username = u.username) AS josname,', $sql_ary);
$result = $db->sql_query($sql);

Код: Выделить всё

	$rowset_data = array(
		'hide_post'			=> (($row['foe'] || $row['post_visibility'] == ITEM_DELETED) && ($view != 'show' || $post_id != $row['post_id'])) ? true : false,

		'post_id'			=> $row['post_id'],
		'post_time'			=> $row['post_time'],
		'user_id'			=> $row['user_id'],
		'josname'			=> $row['josname'],
Правильно я понял? а куда и от куда мне теперь вывести josname?
Аватара пользователя
LavIgor
Former team member
Сообщения: 3468
Стаж: 9 лет 11 месяцев
Благодарил (а): 41 раз
Поблагодарили: 932 раза

Re: Вывод дополнительной информации рядом с переменной $username как?

Сообщение LavIgor »

S3cur1ty писал(а): правильно я понял?
Неправильно.
Во-первых, категорически не рекомендуется править файлы движка, следует создать расширение.
Во-вторых, первый параметр метода sql_build_query - тип запроса, но никак не сам запрос.
S3cur1ty
phpBB 1.2.0
Сообщения: 19
Стаж: 7 лет 10 месяцев
Поблагодарили: 1 раз

Re: Вывод дополнительной информации рядом с переменной $username как?

Сообщение S3cur1ty »

Я так понимаю что вывод никнеймов находиться в одном селексе, мне будет достаточно просто поменять SELECT username на SELECT (SELECT idx.name FROM bdsite_idx.em0s6_users AS idx WHERE idx.username = u.username) AS username что бы не усложнять. я конечно понимаю что лучше не лезть в хорошо написанный код но просто хуже не станет. а разбираться в написании старонних приложений по форум который первый раз вижу ну это просто АБЗАЦ какой то... я надеюсь Вы меня паймете. Я прочитал несколько раз статью про написание представлений который пришли на смену модам в версии 3.1 Расширения - это просто! как то все сложно... Я не такой уж крутой программст как Вы. Мне сложно ариентироваться в этом коде. Надеюсь на Вашу помощь.
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12372
Стаж: 12 лет 7 месяцев
Благодарил (а): 223 раза
Поблагодарили: 3517 раз
Контактная информация:

Re: Вывод дополнительной информации рядом с переменной $username как?

Сообщение Татьяна5 »

Не в одном, в разных. И в разных файлах.
В viewtopic.php выбор выглядит как SELECT u.*

В событии core.viewtopic_get_post_data можно написать нечто вроде

Код: Выделить всё

$sql_ary = $event['sql_ary'];
$sql_ary['SELECT'] .= ', idx.name as josname';
$sql_ary['LEFT_JOIN'] = array_merge($sql_ary['LEFT_JOIN'], array(
		array(
			'FROM'	=> array('dbnae_idx.em0s6_users' => 'idx'),
			'ON'	=> 'idx.username = u.username',
		),
	)
);
$event['sql_ary'] = $sql_ary;
А в core.viewtopic_post_rowset_data

Код: Выделить всё

$rowset_data = $event['rowset_data'];
$row = $event['row'];
$rowset_data['username'] = $row['josname'];
$event['rowset_data'] = $rowset_data;
S3cur1ty
phpBB 1.2.0
Сообщения: 19
Стаж: 7 лет 10 месяцев
Поблагодарили: 1 раз

Re: Вывод дополнительной информации рядом с переменной $username как?

Сообщение S3cur1ty »

Я так понимаю в событие нужно найти SELECT и добавить Ваш запрос?
или

Код: Выделить всё

extract($phpbb_dispatcher->trigger_event('core.viewtopic_get_post_data', compact($vars)));

$sql = $db->sql_build_query('SELECT', $sql_ary);
$result = $db->sql_query($sql);

$sql_ary = $event['sql_ary'];
$sql_ary['SELECT'] .= ', idx.name as josname';
$sql_ary['LEFT_JOIN'] = array_merge($sql_ary['LEFT_JOIN'], array(
      array(
         'FROM'   => array('dbsite_idx.em0s6_users' => 'idx'),
         'ON'   => 'idx.username = u.username',
      ),
   )
);
$event['sql_ary'] = $sql_ary;
Если често, Я понимаю что Вы мне дали, но что делать с этим я не понимаю((
Ответить

Вернуться в «Для разработчиков»