Страница 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