Поиск своих тем пользователя из определенных форумов

Форум для авторов модов для phpBB 3.0.x. Здесь можно попросить помощи в разработке у коллег.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
HAMMER663
Former team member
Сообщения: 2032
Стаж: 16 лет 5 месяцев
Откуда: Зеленоград
Благодарил (а): 77 раз
Поблагодарили: 249 раз

Поиск своих тем пользователя из определенных форумов

Сообщение HAMMER663 »

Пользователь создал тему в определенном форуме. Далее он может нажать на кнопку "Ваши темы в форуме" и выводится список тем, которые он создал в этом самом форуме.
Что-то типа мода Prime Self Topics, только выводить из определенных форумов темы.
Не могу понять где вообще производится выборка из бд своих тем на форуме?
В search.php есть такое

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

			case 'egosearch':
				$l_search_title = $user->lang['SEARCH_SELF'];
			break;
Shredder
Former team member
Сообщения: 2266
Стаж: 17 лет 9 месяцев
Благодарил (а): 283 раза
Поблагодарили: 584 раза

Re: Поиск своих тем пользователя из определенных форумов

Сообщение Shredder »

Что-то типа $user_id = topic_poster в SQL-запросе. Вроде всё просто.
Аватара пользователя
HAMMER663
Former team member
Сообщения: 2032
Стаж: 16 лет 5 месяцев
Откуда: Зеленоград
Благодарил (а): 77 раз
Поблагодарили: 249 раз

Re: Поиск своих тем пользователя из определенных форумов

Сообщение HAMMER663 »

Shredder в том-то и дело, что я не могу найти где это.
А уж потом надо будет добавить в запрос условие на вывод только из определенных форумов...
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 7 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: Поиск своих тем пользователя из определенных форумов

Сообщение Sheer »

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

	// Egosearch is an author search
	case 'egosearch':
		$author_id = $user->data['user_id'];
Вот и все!
А далее этот id попадает в массив $author_id_ary с единственным в этом случае элементом

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

	// If we are looking for authors get their ids
	$author_id_ary = array();
	$sql_author_match = '';
	if ($author_id)
	{
		$author_id_ary[] = $author_id;
	}
Добавлено спустя 1 минуту 41 секунду:
Ну или сделай проще.
$user->data['user_id']
От этого и пляши.

Добавлено спустя 3 минуты 48 секунд:
Как-то так

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

$sql = 'SELECT * FROM '. TOPICS_TABLE .' WHERE forum_id = '.$forum_id.' AND topic_poster = '.$user->data['user_id'].'';
Последний раз редактировалось HAMMER663 26.01.2013 11:33, всего редактировалось 2 раза.
Причина: Заменил topic_first_topic_id на topic_poster
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
HAMMER663
Former team member
Сообщения: 2032
Стаж: 16 лет 5 месяцев
Откуда: Зеленоград
Благодарил (а): 77 раз
Поблагодарили: 249 раз

Re: Поиск своих тем пользователя из определенных форумов

Сообщение HAMMER663 »

Sheer ага. С этим все понятно. А как выводить данные в шаблон поиска?

Добавлено спустя 35 минут 45 секунд:
Sheer этот запрос все равно выводит все темы, где я писал, а не те, где я автор темы

Добавлено спустя 1 минуту 18 секунд:

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

$sql_where = '';
		$include_forums = explode(',', $config['include_forums']);
		foreach ($include_forums as $i => $id)
		{
			if ($id > 0)
			{
				$sql_where .= ' AND forum_id = ' . trim($id);
			}
		}

		$sql = 'SELECT * 
			FROM '. TOPICS_TABLE .' 
			WHERE topic_poster = ' . $user->data['user_id'] . '  '. $sql_where . '';
		echo $sql;
Eugeny1987
phpBB 1.4.1
Сообщения: 43
Стаж: 14 лет 6 месяцев
Благодарил (а): 4 раза
Поблагодарили: 1 раз

Re: Поиск своих тем пользователя из определенных форумов

Сообщение Eugeny1987 »

попробуйте так

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

$sql_where = '';
		$include_forums = explode(',', $config['include_forums']);
		foreach ($include_forums as $i => $id)
		{
			if ($id > 0)
			{
				$sql_where .= ' AND forum_id = ' . trim($id);
			}
		}

		$sql = 'SELECT * 
			FROM '. TOPICS_TABLE .' 
			WHERE topic_first_post_id= ' . $user->data['user_id'] . '  '. $sql_where . '';
		echo $sql;
Аватара пользователя
HAMMER663
Former team member
Сообщения: 2032
Стаж: 16 лет 5 месяцев
Откуда: Зеленоград
Благодарил (а): 77 раз
Поблагодарили: 249 раз

Re: Поиск своих тем пользователя из определенных форумов

Сообщение HAMMER663 »

Eugeny1987 какой смысл искать совпадение ID первого поста с ID юзера?
Аватара пользователя
HAMMER663
Former team member
Сообщения: 2032
Стаж: 16 лет 5 месяцев
Откуда: Зеленоград
Благодарил (а): 77 раз
Поблагодарили: 249 раз

Re: Поиск своих тем пользователя из определенных форумов

Сообщение HAMMER663 »

Вот не пойму. Вот я добавил перед

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

			case 'newposts':
				$l_search_title = $user->lang['SEARCH_NEW'];
Это

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

			case 'proc':
				$l_search_title = $user->lang['SELF_TOPICS'];

				// force sorting
				$show_results = 'topics';
				$sort_key = 't';
				$sort_by_sql['t'] = 't.topic_last_post_time';
				$sql_sort = 'ORDER BY ' . $sort_by_sql[$sort_key] . (($sort_dir == 'a') ? ' ASC' : ' DESC');


				$sqlwhere = '';
				$include_forums = explode(',', $config['include_forums']);
				foreach ($include_forums as $i => $id)
				{
					if ($id > 0)
					{
						$sqlwhere .= ' AND forum_id = ' . trim($id);
					}
				}

				$sql = 'SELECT topic_id 
					FROM '. TOPICS_TABLE .' 
					WHERE topic_poster = ' . $user->data['user_id'] . '  '. $sqlwhere . '';
				$field = 'topic_id';
			break;
Далее куда попадает значение $sql?
Сюда?

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

		if ($sql)
		{
			// Only return up to $total_matches_limit+1 ids (the last one will be removed later)
			$result = $db->sql_query_limit($sql, $total_matches_limit + 1);

			while ($row = $db->sql_fetchrow($result))
			{
				$id_ary[] = (int) $row[$field];
			}
			$db->sql_freeresult($result);
		}
Добавлено спустя 4 минуты 48 секунд:
Еще добавил после

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

	case 'egosearch':
		$author_id = $user->data['user_id'];
		if ($user->data['user_id'] == ANONYMOUS)
		{
			login_box('', $user->lang['LOGIN_EXPLAIN_EGOSEARCH']);
		}
	break;
Это

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

	case 'proc':
		$author_id = $user->data['user_id'];
		
		if (!$config['proc_enable'])
		{
			$template->assign_var('NO_SEARCH', true);
			trigger_error('NO_SEARCH_PROC');
		}
		else if (!$user->data['is_registered'])
		{
			login_box('', $user->lang['LOGIN_EXPLAIN_PROC']);
		}		
	break;
Так вот здесь $author_id = $user->data['user_id']; нужно вообще?
Если убираю ничего не выводит, если оставляю, то выводит все темы с моими сообщениями

Добавлено спустя 2 часа 57 минут 15 секунд:
Хоть вставляй этот код, хоть убирай.

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

				$sql = 'SELECT topic_id 
					FROM '. TOPICS_TABLE .' 
					WHERE topic_poster = ' . $user->data['user_id'] . '  '. $sqlwhere . '';
				$field = 'topic_id';
Все равно ничего не меняется..

Вернуться в «Для авторов (phpBB 3.0.x)»