


<?
#database info, or include a config.php file
$db_host = 'localhost'; #change to your host
$db_user = 'username'; #change to your user name
$db_password = 'password'; #change to your password
$db_name = 'database_name'; #change to your db name
mysql_connect($db_host,$db_user,$db_password) or die(mysql_error());
mysql_select_db($db_name) or die(mysql_error());
/* to keep a forum secret (i.e. a mods only forum) find, AND t.forum_id != 1, and change 1 to the forums id (according to your database)
to select a specific forum (i.e. news forum), find AND t.forum_id != 1, and change it to t.forum_id = 1 (where 1 = the forums id) */
$result = mysql_query("SELECT DISTINCT t.topic_id, t.topic_title, t.topic_poster, t.topic_first_post_id, t.forum_id, t.topic_replies, u.user_id, u.username, s.post_id, s.post_text
FROM phpbb_posts p, phpbb_topics t, phpbb_users u, phpbb_posts_text s
WHERE p.topic_id = t.topic_id AND t.topic_poster = u.user_id AND t.topic_first_post_id = s.post_id AND t.forum_id != 1 AND u.user_id != -1
ORDER BY p.post_time desc LIMIT 10");
/* this function is used to limit the amount of text displayed, as well as replace any bbcode.
it also converts any new lines (enters/returns), to an acctual break for people to see
if you want bbcode displayed, remove the $text = preg_replace... line
ONLY KEEP IF YOU ARE GOING TO DISPLAY THE BODY TEXT OF A POST */
function text($text, $limit){
$text = str_replace("\n", "<br>", $text);
$text = preg_replace("#\[(.*?)\].*?\[/(.*?)\]#si", "<i>[bbcode]</i>", $text);
if(strlen($text)>$limit){
$text = substr($text, 0, $limit);
$text = substr($text, 0, -(strlen(strrchr($text, ' '))))."...";
}
return $text;
}
while($r=mysql_fetch_array($result)){
/* change 100, to the number of characters you want to show
you only need the following line if you kept the above function */
$text = text($r['post_text'], 100);
/* to change the display, edit this
also change both the <a> tags to the correct path to your forums, leave the part after /forum/ the same */
echo "<a href=/forum/viewtopic.php?t=".$r['topic_id']." target=_blank>".$r['topic_title']."</a><br>
by: <a href=/forum/profile.php?mode=viewprofile&u=".$r['user_id']." target=_blank>".$r['username']."</a><br>
$text
<div align=\"right\">Replies: ".$r['topic_replies']."</div>
<hr>";
}
#OPTIONAL, to save file size, delete the orange comments
?>
Now to explain one of the non-normal things:
On the SELECT line, you'll notice the word DISTINCT and the format for selecting is (letter).(column). The term DISTINCT, just means that if it finds 2 things that match the WHERE criteria, it will only select 1 of them. And the format goes with the FROM line. On the FROM line it has a format of "table variable", all that does is select the table and makes it so all the columns have the prefix of the letter(s) you added. For instance, i can change "phpbb_posts p" to "phpbb_posts z" and then i would have to change all the "p.columns" to "z.column". The choosen letter really has nothing to do with the database itself, just personal choice (but it is required to run the script)
As a final note, the query's used in this were set for the default installation of phpbb, if you changed your table prefix before or after the installation you will need to go through and change the queries to match.