Ребята вот у меня такая задача стоит.
Надо выбрать 10 названий последних топиков из опредененного форума. Как это сделать? База данных MYSQL. Нужно только sql запрос. И и еше количество ответов в кажом топике.
Хелп плиз...
Помогите программеру
-
- phpBB 1.4.2
- Сообщения: 65
- Стаж: 20 лет 3 месяца
Код: Выделить всё
$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_replies - число ответов
topic_last_post_id - id последнего ответа, чтобы на него можно было сгенерировать ссылку типа viewtopic.php?p=topic_last_post_id#topic_last_post_id
Добавлено спустя 2 минуты 33 секунды:
Код: Выделить всё
t.topic_status <> 2 AND
-
- phpBB 1.2.0
- Сообщения: 14
- Стаж: 19 лет 10 месяцев
Блин а вот с запросом мне кое что не понятно
(( пояснили бы поподробнее... FORUMS TABLE чё откуда если я смотрю на базу phpbb я чёто такой тыблицы не вижу... 
PS. Ко всем таблицам у меня стоит префикс phpbb2_. Вы можете написать запрос не обращаясь к переменным какимто внешним а строго по стандартным талицам форума. Плизззз а то я вообще пишу оболочку на asp.net а в php плохо понимаю.
((


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

-
- phpBB 1.4.2
- Сообщения: 65
- Стаж: 20 лет 3 месяца
-
- phpBB 1.2.0
- Сообщения: 14
- Стаж: 19 лет 10 месяцев
У меня работает и php и asp.net просто я хочу написать портал и встроить туда новости и всякую фигню. Новости буду публиковать в форуме, а на странице новостей будет писаться:Nome писал(а):смотри файл includes/constants.php, там расписаны все таблицы и некоторые другие переменные
phpbb2_forums = FORUMS_TABLE дальше по аналогии можно понять
попутно вопрос, какой смысл писать оболочку под asp если форум работает на php и придется его ставить на хост с php а не с asp чтобы он работал
Заголовок: название новой темы
Дата: Когда написано сообщение
Кем написано: пользователь который написал мессагу (Админ форума или пользователь который могбы создавать темы в данном форуме)
Текст сообщения: сообщение первое из топика нового, и ссылка на него типа >> Обсудить новость (32) - 32 это число ответов в топике.
Я уже замутил шапку и скин форуму что всё под мой портал подходит. Теперь мой форум phpbb выглядет так как раздел портала. Вообщем всё уже сделал. Вот только теперь надо сделать парочку запросов. Вот не могу понять тут очень сложная структура таблиц так сходу не разбереш. Прошу вашей помощи.
-
- phpBB 1.4.2
- Сообщения: 65
- Стаж: 20 лет 3 месяца
хм, я думаю есть смысл проанализировать код мода ezPortal от Smartor'a
Добавлено спустя 3 минуты 17 секунд:
обработка даты в формате phpbb2:
существует специальная функция, которую вам скорее всего придется переписать, т.к. в sql базе храгится unixtime:
вообще в phpbb2 изначально интегрировано много полезных функций, облегчающих работу при создании модов
Код: Выделить всё
$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'; // обратная сортировка
обработка даты в формате phpbb2:
существует специальная функция, которую вам скорее всего придется переписать, т.к. в sql базе храгится unixtime:
Код: Выделить всё
$topic_time = create_date($board_config['default_dateformat'], $row['topic_time'], $board_config['board_timezone']);
-
- phpBB 1.2.0
- Сообщения: 14
- Стаж: 19 лет 10 месяцев
-
- phpBB 1.2.0
- Сообщения: 14
- Стаж: 19 лет 2 месяца