Пропустить

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

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

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

Сообщение palasaty » 26.12.2005 12:45

Больгого опыта программирования не имею, поэтому прошу помощи у профи.
Написал скрипт, который выводит на страницу сайта последние несколько сообщений с форума (запрос к БД от имени "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;
?>


Все работает.
Но все же... ткните носом ламера (т.е. меня) в недостатки.
Заранее спасибо.

palasaty
phpBB 1.0.0
 
Сообщения: 6
Зарегистрирован: 21.11.2005 10:47
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Сообщение TUMS » 27.12.2005 9:45

Кусок
 $mysql_host     = "localhost"; 
 $mysql_user     = "user"; 
 $mysql_password = ""; 
 $mysql_bd       = "mysql";


можно заменить на данные из phpBB

// количество выводимых сообщений 
 $count  = 5;


Можно прикрутить к админке )


По поводу остального не решусь говорить, ибо лучше всё-таки поспать..
Аватара пользователя
TUMS
phpBB 2.0.5
 
Сообщения: 244
Зарегистрирован: 16.10.2005 3:39
Откуда: Msk, RU
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Сообщение Xpert » 27.12.2005 11:17

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

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

Сообщение palasaty » 27.12.2005 14:34

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" после сообщения.
:)
Слушаю ваши комментарии и замечания.

palasaty
phpBB 1.0.0
 
Сообщения: 6
Зарегистрирован: 21.11.2005 10:47
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Сообщение TUMS » 27.12.2005 16:38

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

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

Ну или хотя бы его расковырять...
Аватара пользователя
TUMS
phpBB 2.0.5
 
Сообщения: 244
Зарегистрирован: 16.10.2005 3:39
Откуда: Msk, RU
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Сообщение palasaty » 27.12.2005 17:06

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

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

Ну или хотя бы его расковырять...


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

palasaty
phpBB 1.0.0
 
Сообщения: 6
Зарегистрирован: 21.11.2005 10:47
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.


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

 

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

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

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

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