Latest post on your homepage ( phpbb )

By LordHawk on Nov 14, 2008

This is a php code it show the latest forum post with phpBB3 on the homepage of your website. It work with your config.php in your PHPBB directory. If you wish to show more then the latest 5 posts you can change the $topicnumber to whatever you wish to display.

Image

<?php
    // How Many Topics you want to display?
    $topicnumber = 5;
    // Change this to your phpBB path
    $urlPath = "/phpbb";

    // Database Configuration (Where your phpBB config.php file is located)
    include 'phpbb/config.php';

    $table_topics = $table_prefix. "topics";
    $table_forums = $table_prefix. "forums";
    $table_posts = $table_prefix. "posts";
    $table_users = $table_prefix. "users";
    $link = mysql_connect("$dbhost", "$dbuser", "$dbpasswd") or die("Could not connect");
    mysql_select_db("$dbname") or die("Could not select database");

    $query = "SELECT t.topic_id, t.topic_title, t.topic_last_post_id, t.forum_id, p.post_id, p.poster_id, p.post_time, u.user_id, u.username
    FROM $table_topics t, $table_forums f, $table_posts p, $table_users u
    WHERE t.topic_id = p.topic_id AND
    f.forum_id = t.forum_id AND
    t.forum_id != 4 AND
    t.topic_status <> 2 AND
    p.post_id = t.topic_last_post_id AND
    p.poster_id = u.user_id
    ORDER BY p.post_id DESC LIMIT $topicnumber";
    $result = mysql_query($query) or die("Query failed");                                   

    print "<table cellpadding='3' cellSpacing='2' width='640'>";
    while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {

    echo  "<tr valign='top'><td><font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"1\"><font color=\"#FFCC00\"><b><a href=\"$urlPath/viewtopic.php?f=$row[forum_id]&t=$row[topic_id]&p=$row[post_id]#p$row[post_id]\" TARGET=\"_blank\">" .
    $row["topic_title"] .
    "</a></td></font></b><td><font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"1\"><font color=\"#C0C0C0\"> by: <a href=\"$urlPath/memberlist.php?mode=viewprofile&u=$row[user_id]\" TARGET=\"_blank\">" .
    $row["username"] .
    "</td><td><font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"1\"><font color=\"#C0C0C0\">" .
    date('F j, Y, g:i a', $row["post_time"]) .
    "</td></tr></font>";
    }
    print "</table>";
    mysql_free_result($result);
    mysql_close($link);
    ?>

Comments

Sign in to comment.
jo19   -  Jan 01, 2014

Thanks for the code, which works perfectly with phpbb3, but I have an issue to display the German umlaut in my website.
If applying the code I just see a � instead of the umlaut Ä, Ü or Ö.
Can sombody support what I have to put in the code to have displayed the umlaut correctly? (both database and website are in UTF-8)
Thanks in advance.

 Respond  
Bipster   -  Aug 13, 2013

All I can get to display is Could Not Connect. From what I can tell that's displayed if login fails? I am still trying to re-teach myself some of this stuff after a lengthy break in web dev. My URL path I put in the URL not referencing the folder relative to where the file is. Am I supposed to put my login and password in the code or let it call it from the config.php file?

Any help would be appreciated.

 Respond  
F*U*R*B*Y*   -  Jul 22, 2013

show us line 15-20 to help you

Hawkee  -  Jul 23, 2013

Heya Furb, good to see you pop in.

Sign in to comment

gerbil   -  Jun 22, 2013

Parse error: syntax error, unexpected '<' in /home/user/public_html/config.php on line 18". What I'm doing wrong? Please help.

 Respond  
dj69   -  Feb 08, 2012

Very nice
Thank you.

 Respond  
madmickc   -  May 08, 2011

Just what I was looking for. Works great. Thank you.

 Respond  
dwongu   -  Jan 20, 2011

This is awesome! However, what I would love is the ability to also add an "excerpt" from the latest post, rather than just the post title/link.

For example:

Post Title (linked)
Post Excerpt (140 characters) (more link...)
Posted by (user) on (date)

Can anyone help with this? I don't know how to select the actual post content from the db OR how to only show the first 140 characters...

Thanks!

 Respond  
Marsha   -  Aug 24, 2010

Hi,

This is an excellent thread, easy for a novice like me to understand. Thanks to all.

Can someone post an example of latestpost.asp with only the topic appearing. I am using a right side block on my home page and it is limited in size.

Also, can you include code that when the visitor clicks a topic, and they are not registered, present the Register page otherwise present the Login page.

Thank you very much in advance.

 Respond  
WWu777   -  Aug 23, 2010

There's some problems with this. The topic threads shown do not wrap around. If you put them in the sidebar, they just go off the screen.

Plus the font is small. Can you control the font?

Also, the links open in new windows, not the same one. How do you fix that?

 Respond  
WWu777   -  Aug 23, 2010

Can I put this code on the phpBB forum index page? If so, how do I put it in the sidebar and constrain the width of it into a box? Can you give a table code that will do that?

Thanks.

 Respond  
iPirate   -  May 13, 2010

How to show only 1 forum? Besides by excluding every other forum XD

 Respond  
Dunc   -  Apr 10, 2010

To set the correct timezone in the script add this line after ORDER BY...

date_default_timezone_set('Europe/London');

 Respond  
Dunc   -  Apr 07, 2010

I've done some research and to prevent unapproved posts appearing in your list add the following:

t.topic_approved = 1 AND

 Respond  
Dunc   -  Mar 30, 2010

Hi there, Great script! However I see one problem for anyone that moderates comments before they are put live. The unapproved comments show up on the pages running this script. Is there a way to ensure they cannot be seen until approved? Thanks.

 Respond  
smarta   -  Mar 15, 2010

can anyone help me with these questions please ?

I have a BB that will eventually have many Categories & Forums - is there a way to automatically include forums into the latest post snippet without having to add each forum or forum number into the code?

also is there a way I can remove the username & date from the snippet - so just the post's topic appears

 Respond  
Korvin   -  Mar 11, 2010
t.forum_id != 4

not every forum's mod forum has the id 4 =p

 Respond  
F*U*R*B*Y*   -  Mar 09, 2010

add the code to where you want it to appear

 Respond  
WarrenR   -  Mar 09, 2010

my original config.php states:

<?php
// phpBB 3.0.x auto-generated configuration file
// Do not change anything in this file!
$dbms = 'mysqli';
$dbhost = 'localhost';
$dbport = '';
$dbname = 'fatewhee_BBS';
$dbuser = 'fatewhee_WarrenR';
$dbpasswd = 'Haonan_6996';
$tableprefix = 'phpbb';
$acm_type = 'file';
$load_extensions = '';

@define('PHPBB_INSTALLED', true);
// @define('DEBUG', true);
// @define('DEBUG_EXTRA', true);
?>

where should i insert the code in this original code?

and also, how can i make it display on my home page (in a content box that i create), since i've only changed the config.php for the forum, i think i'd need an additional step to call it up in my homepage?

Sorry, really dump about programming and coding etc.

 Respond  
smarta   -  Feb 24, 2010

this works well & is really easy to use - but I have 2 questions

I have a BB that will eventually have many Categories & Forums - is there a way to automatically include forums into the latest post snippet without having to add each form or forum number into the code?

also is there a way I can remove the username & date from the snippet - so just the post's topic appears

 Respond  
VinX   -  Aug 02, 2009

sweet , thanks LordHawk <3

 Respond  
LordHawk   -  Aug 01, 2009

Im currently working on a SMF version of this same code. I can look into vBulletin also.

 Respond  
VinX   -  Jul 31, 2009

i would really love to see a vBulletin version ..

 Respond  
LordHawk   -  Jul 14, 2009

Correct Scotty. Sorry ive been really busy, with my site and trying to keep up with the changing times.

 Respond  
scotty2024   -  Jul 14, 2009

Never mind, figured it out. For anyone else wanting to do this, change the query to something like this:

$query = "SELECT t.topic_id, t.topic_title, t.topic_last_post_id, t.forum_id, p.post_id, p.poster_id, p.post_time, u.user_id, u.username
FROM $table_topics t, $table_forums f, $table_posts p, $table_users u
WHERE t.topic_id = p.topic_id AND
f.forum_id = t.forum_id AND
t.forum_id <> X AND
t.topic_status <> 2 AND
p.post_id = t.topic_last_post_id AND
p.poster_id = u.user_id AND
ORDER BY p.post_id DESC LIMIT $topicnumber";

Note the line "t.forum_id <> X AND". Change X to the number of the forum. This number can be found by looking at the URL of the forum. It is f=X in the URL. For example http://www.yourwebsite.com/viewforum.php?f=5. In this case it is 5. You can repeat the line t.forum_id <> X AND for each for you want excluded.

 Respond  
Hawkee   -  Jul 14, 2009

scotty2024, you probably have to explicity indicate this in the SQL query. Maybe add something like "AND f.forum_id != 123 AND f.forum_id !=234" etc.

 Respond  
scotty2024   -  Jul 14, 2009

Is there a way to exclude certain forums or even categories? For example, I have a moderator category with three different forums that I don't want displayed. How can I exclude them?
Thanks.

 Respond  
Eepeepee   -  Jun 23, 2009

Nice!

Just one little thing: the script does not produce valid html (any version)

The font and bold tags get opened inside the

, but closed outside it (). It's no biggie since anyone that cares probably knows how to fix it, but still I wanted to bring it up. Also you could add some line breaks there for improved readability.

But yeah anyway, thanks a bunch, the snippet was a great help to me. :)

 Respond  
websiteministries   -  Jun 22, 2009

Awesome script. Exactly what I was looking for! A+++++++ I hardly ever sign up for forums, but I signed up just so that I could thank you and rate this script.

 Respond  
mbartelt   -  Jun 07, 2009

What must I change to show only new posts from a part of the forum? My forum has different boards about HiFi/Homecinema, Games, Fischertechnik and Hiking. So I only want to show new posts in the Hiking part.

Thanks

Manfred

 Respond  
hawkeeuser   -  May 09, 2009

simply use the iframe with link separate page of this script

 Respond  
Are you sure you want to unfollow this person?
Are you sure you want to delete this?
Click "Unsubscribe" to stop receiving notices pertaining to this post.
Click "Subscribe" to resume notices pertaining to this post.