Пропустить

Мануальное добавление топиков.

Форум для авторов модов для phpBB 2.0.x.

Мануальное добавление топиков.

Сообщение mckey » 07.06.2004 22:28

Как манулально добавлять топики? Т.е. не использую сам скрипт форума. Мне надо чтобы при создании новых разделов на сайте автоматически создавались топики на форуме.

Может кто подскажет?

Вот например у меня есть:
Уже существующий раздел форума - FAQ.
Зарегистрированый пользователь - USER.
База данных MySQL 3.
Тема топика который надо добавить - TOPIC THEME.
Текст топика - TOPIC TEXT.

Мне всего лишь надо знать в какие поля каких таблиц надо добавлять вышеописанные данные.

mckey
 

Сообщение Xpert » 07.06.2004 22:42

Необходимо будет работать со следующими таблицами: phpbb_posts, phpbb_posts_text, phpbb_topics

Структура phpbb_posts:
  `post_id` mediumint(8) unsigned NOT NULL auto_increment, - id сообщения
  `topic_id` mediumint(8) unsigned NOT NULL default '0', - id темы
  `forum_id` smallint(5) unsigned NOT NULL default '0', - id форума
  `poster_id` mediumint(8) NOT NULL default '0', - id автора
  `post_time` int(11) NOT NULL default '0', - время в формате unix timestamp
  `poster_ip` varchar(8) NOT NULL default '', - ip пользователя, закодирован в 16-ричной системе счисления
  `post_username` varchar(25) default NULL, - имя пользователя, если сообщение отправлено гостем
  `enable_bbcode` tinyint(1) NOT NULL default '1', - BBCode
  `enable_html` tinyint(1) NOT NULL default '0', - html
  `enable_smilies` tinyint(1) NOT NULL default '1', - смайлики
  `enable_sig` tinyint(1) NOT NULL default '1', - подпись
  `post_edit_time` int(11) default NULL, - время последнего редактирования
  `post_edit_count` smallint(5) unsigned NOT NULL default '0', - количество редактирований


Структура phpbb_posts_text:
  `post_id` mediumint(8) unsigned NOT NULL default '0', - id сообщения
  `bbcode_uid` varchar(10) NOT NULL default '', - уникальный id ббкода
  `post_subject` varchar(60) default NULL, - тема
  `post_text` text, - текст


Структура phpbb_topics:
  `topic_id` mediumint(8) unsigned NOT NULL auto_increment, - id темы
  `forum_id` smallint(8) unsigned NOT NULL default '0', - id форума
  `topic_title` char(60) NOT NULL default '', - название темы
  `topic_poster` mediumint(8) NOT NULL default '0', - id автора
  `topic_time` int(11) NOT NULL default '0', - время начала темы (unix timestamp)
  `topic_views` mediumint(8) unsigned NOT NULL default '0', - просмотров
  `topic_replies` mediumint(8) unsigned NOT NULL default '0', - ответов
  `topic_status` tinyint(3) NOT NULL default '0', - статус темы
  `topic_vote` tinyint(1) NOT NULL default '0', - id опроса (если есть)
  `topic_type` tinyint(3) NOT NULL default '0', - тип темы
  `topic_first_post_id` mediumint(8) unsigned NOT NULL default '0', - id первого поста темы
  `topic_last_post_id` mediumint(8) unsigned NOT NULL default '0', - id последнего поста темы
  `topic_moved_id` mediumint(8) unsigned NOT NULL default '0', - если тема была перемещена, то здесь id новой темы


Сначала создаешь пост. Затем, имея уже на руках его id - создаешь текст. Потом - тему. В заключение добавляешь тему в поисковую систему форума и обновляешь поле forum_last_post_id в таблице phpbb_forums.
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Аватара пользователя
Xpert
phpBB Guru
phpBB Guru
 
Сообщения: 5492
Зарегистрирован: 13.03.2004 22:27
Откуда: msk.ru
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Сообщение mckey » 08.06.2004 22:28

Ну спасиба! :-) Ща буду пробывать.

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

Впринципе всё более-менее понятно, кроме одного: что есть
`bbcode_uid` varchar(10) NOT NULL default '', - уникальный id ббкода
и откуда он берётся? (Или по какому принципу создаётся)

mckey
 

Сообщение Xpert » 08.06.2004 22:36

mckey
Он создается следующей функцией:
function make_bbcode_uid()
{
	// Unique ID for this message..

	$uid = md5(mt_rand());
	$uid = substr($uid, 0, BBCODE_UID_LEN);

	return $uid;
}


BBCODE_UID_LEN равно 10. Сам же уникальный id подставляется в парные теги bbcode, т.е. вместо [b] мы должны записать в БД [b:uid]
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Аватара пользователя
Xpert
phpBB Guru
phpBB Guru
 
Сообщения: 5492
Зарегистрирован: 13.03.2004 22:27
Откуда: msk.ru
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Сообщение Mefisto » 08.06.2004 23:10

спасибо!

Mefisto
 

Re: Мануальное добавление топиков.

Сообщение romutis » 09.06.2004 8:28

mckey писал(а):Как манулально добавлять топики? Т.е. не использую сам скрипт форума. Мне надо чтобы при создании новых разделов на сайте автоматически создавались топики на форуме.

Может кто подскажет?

Вот например у меня есть:
Уже существующий раздел форума - FAQ.
Зарегистрированый пользователь - USER.
База данных MySQL 3.
Тема топика который надо добавить - TOPIC THEME.
Текст топика - TOPIC TEXT.

Мне всего лишь надо знать в какие поля каких таблиц надо добавлять вышеописанные данные.


Возьми "[Function] Insert Post", написанную netclectic:
http://www.netclectic.com/forums/download.php?id=154
Там есть всё для добавления новых сообщений/топиков. Только вызывай функцию с нужными параметрами - будут тебе новые топики. :)
// romutis

romutis
phpBB 2.0.0
 
Сообщения: 111
Зарегистрирован: 09.06.2004 8:00
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Сообщение mckey » 09.06.2004 10:02

Он создается следующей функцией:
Код:
function make_bbcode_uid()
{
// Unique ID for this message..

$uid = md5(mt_rand());
$uid = substr($uid, 0, BBCODE_UID_LEN);

return $uid;
}


BBCODE_UID_LEN равно 10. Сам же уникальный id подставляется в парные теги bbcode, т.е. вместо [b] мы должны записать в БД [b:uid]


Ага, вроде понятное. Сегодня вечером буду пробывать.
-------------------------------
Возьми "[Function] Insert Post", написанную netclectic:
http://www.netclectic.com/forums/download.php?id=154
Там есть всё для добавления новых сообщений/топиков. Только вызывай функцию с нужными параметрами - будут тебе новые топики.


Да помоему легче своё написать. Ато хрен его знает как там эти перцы чего написали. Разбираться в уже написанном часто бывает сложнее, чем написать самому.

mckey
 

Сообщение romutis » 09.06.2004 10:11

mckey писал(а):Да помоему легче своё написать. Ато хрен его знает как там эти перцы чего написали. Разбираться в уже написанном часто бывает сложнее, чем написать самому.


Да там не надо ничего разбираться. Вызываешь функцию с нужными параметрами - и готово! "Внутренности" функции даже знать необязательно. А то, что netclectic пишет правильный код - у меня, лично, сомнений нет.

Хотя, хозяин-барин.
// romutis

romutis
phpBB 2.0.0
 
Сообщения: 111
Зарегистрирован: 09.06.2004 8:00
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Сообщение mckey » 10.06.2004 9:37

Всё круто! :) Всё заработало.

Только надо ещё обязательно увеличивать ещё поля forum_posts и forum_topics в таблице phpbb_forums. Ато потом добавленые посты и топики считаться не будут.

Да там не надо ничего разбираться. Вызываешь функцию с нужными параметрами - и готово! "Внутренности" функции даже знать необязательно. А то, что netclectic пишет правильный код - у меня, лично, сомнений нет.


romutis, мне, как начинающему php'шнику гораздо полезнее написать какую-нить функцию самому, нежели пользоваться наработками других.

З.Ы.
А в том, что netclectic пишет правильный код я даже не сомневаюсь.

mckey
 

Сообщение mckey » 12.06.2004 11:47

Шото у меня один и тот же bbcode_uid всегда генерится. :(

mckey
 

Сообщение Xpert » 12.06.2004 23:30

mckey
Sorry, забыл сказать про это:
// Need to initialize the random numbers only ONCE
mt_srand( (double) microtime() * 1000000);

Необходимо вставить в начало скрипта.
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Аватара пользователя
Xpert
phpBB Guru
phpBB Guru
 
Сообщения: 5492
Зарегистрирован: 13.03.2004 22:27
Откуда: msk.ru
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Сообщение mckey » 13.06.2004 13:10

Вот это совсем другое дело! :D
Щас всё работает как надо.
Только я не понимаю КАК это работает.
Почему в названия функций разные? - mt_srand и mt_rand?
Я начинающий пхп'шник, и поэтому, если можно, плз покомменитруй.

mckey
 

Сообщение Xpert » 13.06.2004 13:41

mckey
Читаем:
http://www.php.net/manual/en/function.mt-rand.php
http://www.php.net/manual/en/function.mt-srand.php

Разные ф-и, (видимо) разные алгоритмы.
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Аватара пользователя
Xpert
phpBB Guru
phpBB Guru
 
Сообщения: 5492
Зарегистрирован: 13.03.2004 22:27
Откуда: msk.ru
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Сообщение mckey » 12.10.2004 17:25

А как подсчитать кол-во ответов в треде?

mckey
 

Сообщение Xpert » 12.10.2004 19:33

mckey
А зачем его считать?
Оно содержится в параметре 'topic_replies' в таблице, отвечающей за темы.
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Аватара пользователя
Xpert
phpBB Guru
phpBB Guru
 
Сообщения: 5492
Зарегистрирован: 13.03.2004 22:27
Откуда: msk.ru
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

След.

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

 

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

Бессрочный конкурс phpBB-ориентированных материалов
FastVPS — надёжный и доступный хостинг для phpBB
Место для вашей рекламы