Страница 5 из 13

PrimeUserTopics

Добавлено: 12 сен 2014, 17:11
Alecto
да. насчет поиска по топику только сейчас допер.... тормоз

Отправлено спустя 1 минуту 24 секунды:
вроде вт такой запрос получился

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

SELECT COUNT(*) FROM `phpbb_topics` WHERE `topic_poster`=3697
Отправлено спустя 30 секунд:
как подумаю что в коде писать - у меня истерика начинается

Отправлено спустя 7 минут 9 секунд:
опять же нашел в спасибках скл-запрос, попробовал собрать

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

		$sql = 'SELECT COUNT(*) FROM ' . TOPICS_TABLE . 'WHERE topic_poster = ' . {PROFILE_USER_ID};
TOPICS_TABLE можно использовать? или надо где-то определять? или явно задавать?
{PROFILE_USER_ID} это взял из кода выше, или лучше вот это $this->request->variable('u', 0) использовать?

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

	public function page_header_after($event)
	{
		$this->template->assign_vars(array(
			'PROFILE_USER_ID'	=> $this->request->variable('u', 0),
			'USER_TOPICS_COUNT'	=> $sql = 'SELECT COUNT(*) FROM ' . TOPICS_TABLE . 'WHERE topic_poster = ' . {PROFILE_USER_ID};
			        ));

	}
Отправлено спустя 2 минуты 3 секунды:

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

			'USER_TOPICS_COUNT'	=> $sql = 'SELECT COUNT(*) FROM ' . TOPICS_TABLE . 'WHERE topic_poster = ' . $this->request->variable('u', 0),
вот так вроде без ошибок отработало.

Отправлено спустя 3 минуты 24 секунды:
не, так не получилось, мне переменная вывела весь код начиная с скл (
как сделать?

PrimeUserTopics

Добавлено: 12 сен 2014, 17:15
Татьяна5
Если запрос возвращает одну строку:

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

//Здесь задать значение переменной $user_id
$sql = 'SELECT COUNT(topic_id) as user_topics FROM ' . TOPICS_TABLE . ' WHERE topic_poster = ' . (int) $user_id; //Сам запрос
$result = $this->db->sql_query($sql); //Выполняем запрос
$row = $this->db->sql_fetchrow($result); //Получаем одну строку из результата
$this->db->sql_freeresult($result); //Очищаем память от запроса
$user_topics = $row['user_topics']; //Задаём значение результата запроса переменной $user_topics 
Отправлено спустя 2 минуты 1 секунду:
А, ещё в конструктор $db передать надо

PrimeUserTopics

Добавлено: 12 сен 2014, 17:20
Alecto

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

	public function page_header_after($event)
	{

$user_id = $this->request->variable('u', 0);
$sql = 'SELECT COUNT(topic_id) as user_topics FROM ' . TOPICS_TABLE . ' WHERE topic_poster = ' . (int) $user_id; //Сам запрос
$result = $this->db->sql_query($sql); //Выполняем запрос
$row = $db->sql_fetchrow($result); //Получаем одну строку из результата
$db->sql_freeresult($result); //Очищаем память от запроса
$user_topics = $row['user_topics']; //Задаём значение результата запроса переменной $user_topics 

		$this->template->assign_vars(array(
			'PROFILE_USER_ID'	=> $user_id,
			'USER_TOPICS_COUNT'	=> $user_topics,
			        ));

	}
Отправлено спустя 16 секунд:
ошибка
[phpBB Debug] PHP Notice: in file [ROOT]/ext/alecto/PrimeUserTopics/event/listener.php on line 36: Undefined property: alecto/PrimeUserTopics/event/listener::$db

Fatal error: Call to a member function sql_query() on a non-object in /home/motobra2/public_html/ext/alecto/PrimeUserTopics/event/listener.php on line 36

PrimeUserTopics

Добавлено: 12 сен 2014, 17:25
Татьяна5
Татьяна5 писал(а):QR_BBPOST ещё в конструктор $db передать надо
Отправлено спустя 3 минуты 57 секунд:
Alecto писал(а):QR_BBPOST

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

$row = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
И в этих 2-х строках я сначала ошиблась. Не $db, а $this->db

PrimeUserTopics

Добавлено: 12 сен 2014, 17:26
Alecto
в конструктор добавил

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

	public function __construct(\phpbb\template\template $template, \phpbb\db\driver\driver_interface $db, \phpbb\request\request $request)
	{
		$this->template = $template;
		$this->db = $db;
		$this->request = $request;
	}
в сервис тоже, вроде

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

services:
    alecto.PrimeUserTopics.listener:
        class: alecto\PrimeUserTopics\event\listener
        arguments:
            - @template
            - @dbal.conn
            - @request
        tags:
            - { name: event.listener }
ошибка
[phpBB Debug] PHP Notice: in file [ROOT]/ext/alecto/PrimeUserTopics/event/listener.php on line 38: Undefined variable: db

Fatal error: Call to a member function sql_fetchrow() on a non-object in /home/motobra2/public_html/ext/alecto/PrimeUserTopics/event/listener.php on line 38
38 строка вроде вот эта

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

$row = $db->sql_fetchrow($result); //Получаем одну строку из результата

PrimeUserTopics

Добавлено: 12 сен 2014, 17:28
Татьяна5
Перезагружайте страницу, склеенные сообщения бывают не видны до перезагрузки (недостаток QuickReply)

PrimeUserTopics

Добавлено: 12 сен 2014, 17:40
Alecto
ура! получилось!
Татьяна, мочему такое может быть:
смотрю для своего профиля...
Всего тем:
1031 | Найти все темы пользователя
Найдено 1029 результатов
прошелся по другим пользователям - там все впорядке.

Отправлено спустя 2 минуты 46 секунд:
возможно, что ссылки на темы засчитыватся как темы?

PrimeUserTopics

Добавлено: 12 сен 2014, 17:46
Татьяна5
Синхронизация должна помочь

PrimeUserTopics

Добавлено: 12 сен 2014, 17:50
Alecto
сделал, не помогла 1031 тем в профиле, 1029 в выдаче.

Отправлено спустя 1 минуту 37 секунд:
Татьяна5 писал(а):QR_BBPOST И в конструктор надо будет ещё передать $phpbb_root_path и $php_ext ($php_ext в 3.1 = $phpEx в 3.0)
сделал
Татьяна5 писал(а):QR_BBPOST Функция Append sid
надо в слушателе добавлять переменную и передавать ее как адрес в шаблон?

PrimeUserTopics

Добавлено: 12 сен 2014, 17:58
Татьяна5
Точно ссылки могли засчитаться

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

'SELECT COUNT(topic_id) as user_topics FROM ' . TOPICS_TABLE . ' WHERE topic_status <> ' . ITEM_MOVED . ' topic_poster = ' . (int) $user_id