Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

Последние сообщения с форума

Форум для авторов модов для phpBB 2.0.x.
palasaty
phpBB 1.0.0
Сообщения: 6
Стаж: 18 лет 5 месяцев

Последние сообщения с форума

Сообщение palasaty »

Больгого опыта программирования не имею, поэтому прошу помощи у профи.
Написал скрипт, который выводит на страницу сайта последние несколько сообщений с форума (запрос к БД от имени "user" с привелегиями SELECT).

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

<?php
 $mysql_host     = "localhost";
 $mysql_user     = "user";
 $mysql_password = "";
 $mysql_bd       = "mysql";

// количество выводимых сообщений
 $count  = 5;
// префикс сообщения
 $prefix = "<li>";

 $link = mysql_connect($mysql_host, $mysql_user, $mysql_password);
 mysql_select_db($mysql_bd);

 $result = mysql_query( "SELECT post_text FROM phpbb_posts_text ORDER BY post_id DESC LIMIT {$count}" );
 $new_messages = "";
 while ( $line = mysql_fetch_array($result, MYSQL_ASSOC) )
 {
// удаляем разметку: все, что между квадратными скобками и сами скобки
   $line['post_text'] = preg_replace ("/\[[^\]]*\]/i"," ",$line['post_text']);
// формируем текст
   $new_messages .= $prefix.$line['post_text']."\n";
 }
 mysql_close($link);

 echo $new_messages;
?>
Все работает.
Но все же... ткните носом ламера (т.е. меня) в недостатки.
Заранее спасибо.
Аватара пользователя
TUMS
phpBB 2.0.0
Сообщения: 244
Стаж: 18 лет 6 месяцев
Откуда: Msk, RU

Сообщение TUMS »

Кусок

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

 $mysql_host     = "localhost"; 
 $mysql_user     = "user"; 
 $mysql_password = ""; 
 $mysql_bd       = "mysql";
можно заменить на данные из phpBB

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

// количество выводимых сообщений 
 $count  = 5;
Можно прикрутить к админке )


По поводу остального не решусь говорить, ибо лучше всё-таки поспать..
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Стаж: 20 лет 1 месяц
Поблагодарили: 2 раза

Сообщение Xpert »

Есть префикс, но нет постфикса.
Нет обработки ошибок при подключении к серверу и при выборе БД.
Нет обработки ошибок в запросе.
Вместо

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

mysql_fetch_array($result, MYSQL_ASSOC)
можно воспользоваться

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

mysql_fetch_assoc($result)
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
palasaty
phpBB 1.0.0
Сообщения: 6
Стаж: 18 лет 5 месяцев

Сообщение palasaty »

Xpert писал(а):Есть префикс, но нет постфикса.
Нет обработки ошибок при подключении к серверу и при выборе БД.
Нет обработки ошибок в запросе.
Ну, это мелочи жизни - исправлю.
Но вот при дальнейшей разработке возникли некоторые сложности:
1. Надо ограничить длину выводимых сообщений, так как одно сообщение может занимать целую страницу, а выводить его в таком виде не очень красиво.
2. Неплохо было бы приклеить к сообщениям ссылки, по которым пользователь сможет придти на страницу форума с этим сообщением.
Решения пришли следующие:
1.

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

$limit = 200; // максимальная длина строки
// следующую строку вставил после "удаления разметки"
$line['post_text'] .= substr($line['post_text'], 0 , $limit)."</a>\n";
2. Немного подправил запрос к БД

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

$result = mysql_query( "SELECT topic_id,post_text FROM phpbb_posts,phpbb_posts_text WHERE phpbb_posts.post_id=phpbb_posts_text.post_id ORDER BY phpbb_posts.post_id DESC LIMIT {$count}" );
Тогда ссылку можно сформировать так:

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

"<a href="{$path}viewtopic.php?t={$line['topic_id']}&start=5">"
Остается "втиснуть" ее между префиксом и сообщением и закрыть тег "a" после сообщения.
:)
Слушаю ваши комментарии и замечания.
Аватара пользователя
TUMS
phpBB 2.0.0
Сообщения: 244
Стаж: 18 лет 6 месяцев
Откуда: Msk, RU

Сообщение TUMS »

palasaty
а не проще юзануть ezPortal ? =)

Добавлено спустя 18 секунд:

Ну или хотя бы его расковырять...
palasaty
phpBB 1.0.0
Сообщения: 6
Стаж: 18 лет 5 месяцев

Сообщение palasaty »

TUMS писал(а):palasaty
а не проще юзануть ezPortal ? =)

Добавлено спустя 18 секунд:

Ну или хотя бы его расковырять...
спасибо за наводку, друг!
сделаю, как говоришь.

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