Помогите программеру

Идеи для расширения функциональности phpBB 2.0.x
shinji
phpBB 1.2.0
Сообщения: 14
Стаж: 19 лет 10 месяцев

Помогите программеру

Сообщение shinji »

Ребята вот у меня такая задача стоит.

Надо выбрать 10 названий последних топиков из опредененного форума. Как это сделать? База данных MYSQL. Нужно только sql запрос. И и еше количество ответов в кажом топике.

Хелп плиз...
Nome
phpBB 1.4.2
Сообщения: 65
Стаж: 20 лет 3 месяца

Сообщение Nome »

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

$sql = 'SELECT t.topic_title, t.topic_replies, t.topic_last_post_id
	  FROM ' . TOPICS_TABLE . ' t, ' . FORUMS_TABLE . ' f, ' . POSTS_TABLE . ' p, ' . USERS_TABLE . ' u
	  WHERE t.topic_id = p.topic_id AND 
		  f.forum_id = t.forum_id AND 
		  t.topic_status <> 2 AND 
		  p.post_id = t.topic_last_post_id AND 
		  p.poster_id = u.user_id AND
		  t.forum_id IN (Id форумов через запятую, или просто t.forum_id = 1')
	  ORDER BY p.post_id DESC LIMIT 10';
topic_title - и так понятно
topic_replies - число ответов
topic_last_post_id - id последнего ответа, чтобы на него можно было сгенерировать ссылку типа viewtopic.php?p=topic_last_post_id#topic_last_post_id

Добавлено спустя 2 минуты 33 секунды:

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

 t.topic_status <> 2 AND 
это чтобы объявления не выводились, можно убрать
shinji
phpBB 1.2.0
Сообщения: 14
Стаж: 19 лет 10 месяцев

Сообщение shinji »

Блин а вот с запросом мне кое что не понятно :((( пояснили бы поподробнее... FORUMS TABLE чё откуда если я смотрю на базу phpbb я чёто такой тыблицы не вижу... :(

PS. Ко всем таблицам у меня стоит префикс phpbb2_. Вы можете написать запрос не обращаясь к переменным какимто внешним а строго по стандартным талицам форума. Плизззз а то я вообще пишу оболочку на asp.net а в php плохо понимаю. :(((
Nome
phpBB 1.4.2
Сообщения: 65
Стаж: 20 лет 3 месяца

Сообщение Nome »

смотри файл includes/constants.php, там расписаны все таблицы и некоторые другие переменные
phpbb2_forums = FORUMS_TABLE дальше по аналогии можно понять

попутно вопрос, какой смысл писать оболочку под asp если форум работает на php и придется его ставить на хост с php а не с asp чтобы он работал
shinji
phpBB 1.2.0
Сообщения: 14
Стаж: 19 лет 10 месяцев

Сообщение shinji »

Nome писал(а):смотри файл includes/constants.php, там расписаны все таблицы и некоторые другие переменные
phpbb2_forums = FORUMS_TABLE дальше по аналогии можно понять

попутно вопрос, какой смысл писать оболочку под asp если форум работает на php и придется его ставить на хост с php а не с asp чтобы он работал
У меня работает и php и asp.net просто я хочу написать портал и встроить туда новости и всякую фигню. Новости буду публиковать в форуме, а на странице новостей будет писаться:

Заголовок: название новой темы

Дата: Когда написано сообщение

Кем написано: пользователь который написал мессагу (Админ форума или пользователь который могбы создавать темы в данном форуме)

Текст сообщения: сообщение первое из топика нового, и ссылка на него типа >> Обсудить новость (32) - 32 это число ответов в топике.

Я уже замутил шапку и скин форуму что всё под мой портал подходит. Теперь мой форум phpbb выглядет так как раздел портала. Вообщем всё уже сделал. Вот только теперь надо сделать парочку запросов. Вот не могу понять тут очень сложная структура таблиц так сходу не разбереш. Прошу вашей помощи.
Nome
phpBB 1.4.2
Сообщения: 65
Стаж: 20 лет 3 месяца

Сообщение Nome »

хм, я думаю есть смысл проанализировать код мода ezPortal от Smartor'a

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

$sql = 'SELECT
			  t.topic_id, // id темы t=1 например 
			  t.topic_time, // когда была создана тема
			  t.topic_title, // заголовок темы
			  pt.post_text, // текст сообщения
			  u.username, // имя пользователя, автора темы
			  u.user_id, // id автора, например u=2
			  t.topic_replies, // число ответов
			  pt.bbcode_uid, // id для bbcode тегов, скорее всего вам это не нужно, поэтому можно удалить
			  t.forum_id, // id форума, например f=1
			  t.topic_poster, // id автора, надо чтобы из другой таблицы достать информацию о нем
			  t.topic_first_post_id, // id первого поста, применяется при создании ссылок
			  t.topic_status, // тип темы, объявление и т.д.
			  pt.post_id, // id сообщения в теме, втч и первого, нужно чтобы достать информацию из другой таблицы
			  p.post_id,
			  p.enable_smilies // включены ли смайлы для данной темы
			FROM
			  ' . TOPICS_TABLE . ' AS t, // таблица с темами phpbb2_topics
			  ' . USERS_TABLE . ' AS u, // таблица с данными пользователей phpbb2_users
			  ' . POSTS_TEXT_TABLE . ' AS pt, // таблица с телом сообщения phpbb2_posts_text
			  ' . POSTS_TABLE . ' AS p // таблица с заголовком сообщения и некоторыми другими параметрами phpbb2_posts 
			WHERE
			  t.forum_id IN (опять же указываем id форума из которого брать информацию) AND
			  t.topic_time <= ' . time() . ' AND // ограничение по времени для вывода сообщений, т.е. выводятся только те сообщения, которые раньше чем time(), т.е. время в момент генерации страницы
			  t.topic_poster = u.user_id AND // определяем автора
			  t.topic_first_post_id = pt.post_id AND // id сообщения 
			  t.topic_first_post_id = p.post_id AND // id сообщения, разницу точно не помню, но надо чтобы было
			  t.topic_status <> 2 // не берем информацию из объявлений
			ORDER BY
			  t.topic_time DESC'; // обратная сортировка
Добавлено спустя 3 минуты 17 секунд:

обработка даты в формате phpbb2:
существует специальная функция, которую вам скорее всего придется переписать, т.к. в sql базе храгится unixtime:

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

$topic_time = create_date($board_config['default_dateformat'], $row['topic_time'], $board_config['board_timezone']);
вообще в phpbb2 изначально интегрировано много полезных функций, облегчающих работу при создании модов
shinji
phpBB 1.2.0
Сообщения: 14
Стаж: 19 лет 10 месяцев

Сообщение shinji »

Вот это я понимаю ПОМОЩЬ ТАК ПОМОЩЬ расписал сразу всё понятно.
А вот с форматов времени теперь проблема :/. В mysql есть функция преобразования какаянибудь? Или как вообще сделать из того что там используется как время, человчеческое время понятное простому обывателю?
Yevitan
phpBB 1.2.0
Сообщения: 14
Стаж: 19 лет 2 месяца

Сообщение Yevitan »

измени название темы этой , поставь слово "ламер" , тогда получишь ответ

Вернуться в «Запросы модов для phpBB 2.0.x»