Register Members List Search Today's Posts Mark Forums Read

Reply
 
Article Options
Show last 5 posts from thread x on a non-vb page (and parse BB)
Digma
Join Date: Nov 2004
Posts: 60

Netherlands
by Digma Digma is offline 21 Apr 2010

Note: The arcticle below is based on working with vb3.7.3 PL1 and it's fully functional there. I ought it be functional within the rest of the 3.x range, but I can't guarantee anything.

Introduction
This is the first article related to programming I've ever written, so bare with me. While looking for a proper solution myself I have noticed that a lot of people were looking on how to pull posts from a specific thread (not just forum, can use RSS for that) and show either the first x or last x posts from that thread on a non-vb page. On top of that I noticed that in the meantime, which isn't less important, that people were also struggling on how to parse BB Code at the same time. I am not a programmer or anything, but am more than willing to share my knowledge of this, after having ploughed through hundreds of posts and dozens of threads. As I know how frustrating this can be. All credits go to all that contributed through their posts in other threads in order for me to complete this piece of coding.

What is not covered?
I am going to assume that you are familiar with connecting to databases, even connecting to multiple databases and that you will familiarize yourself with the structure of your 'post' table in your forum's database. If you want information on how to connect to 2 databases within the same page, check php.net on mysql_connect() for more info on that.

What is covered?
I'll show you what files regarding the interaction with vbulletin are required for fetching the information and parsing BB Code and give you a little comparisson information on what I did with the true/false settings you can do with the parse. Right, lets get started.

Required lines of code for vbulletin interaction and parsing BB Code

Block Disabled:      (Update License Status)  
Suspended or Unlicensed Members Cannot View Code.

What this basically does is get the interaction going with the vbulletin database and get the required information to properly parse your BB Code. As you can see I commented (//) the line with $parsed_text out, as I only use this specific line for reference later on in the script. We will get back on that later on.

Don't forget to set your path to your forum!

Setting your variables for the Query on the post table
I think the code below is obvious. Of course you can replace 'your_forum_db' and 'thread_id' with values you pull from another database, but lets keep it simple here. Also make sure your threadid exists


Block Disabled:      (Update License Status)  
Suspended or Unlicensed Members Cannot View Code.

Determine postcount for thread
Now we're going to make sure you get those last 5 posts and we have to set a limit for that. Now there are other way to approach this, but I am planning to keep it simple and basically this is what suits my needs.


Block Disabled:      (Update License Status)  
Suspended or Unlicensed Members Cannot View Code.

So what I have done here is count the occurances of postid where the information equals a specific threadid. In other words, how many posts have already been made to this thread. In the end I set a $limit variable and deduct 5 from the postcount that was queried. This is not the query for getting the posts themselves, we will cover that in the next bit.

Getting the post information based on the limit
Now that we know the postcount on thread x, we can go on querying the post table for its contents.


Block Disabled:      (Update License Status)  
Suspended or Unlicensed Members Cannot View Code.

Above I have definied 5 cellnames I found interesting to see (postid, username, userid, threadid and pagetext) from my post table and I had the data extracted from the variables I set earlier ($db_name and $db_table). The condition set was to only get the information where my variable $thread_id aplies and in the end set the $limit and show 5 records. If you properly examine it, it gets as easy as reading a comic book at one point

Parsing the BB-code and output the posts
Now it's time to get things going, parse the bb-code (and in my case also strip it of quotes) and get the information returned onto your screen.


Block Disabled:      (Update License Status)  
Suspended or Unlicensed Members Cannot View Code.

As you can see in the 2nd line, I stripped the quote tags and its content from my posts, as I simply don't like to show that bit, as in my opinion it clutters the page.

Next up is the actuall parsing of the BB-Code. Remember when I commented out that line at the beginning of this article?

This is why and I urge you to only use this to compare the two lines, do not add them (again):

Block Disabled:      (Update License Status)  
Suspended or Unlicensed Members Cannot View Code.

Now, the starting variable is irrelevant to the idea behind this. What I would like to make clear with this is that you have to look at what you're doing. I noticed that people had problems with getting the parse line set up properly. But if you now compare the two, I think it becomes quite clear.

What I am basically telling the parser to do is the following
$pagetext1 (this is what I set earlier, that contains the pagetext (read: post) information)
$do_html = false (NO, do not parse HTML code --> security risk)
$do_smilies = false (NO, do not show any smilies)
$do_bbcode = true (YES, parse normal BB code for me)
$do_imgcode = false (NO, do not show images but their url instead)
$do_nl2br = false (NO, I don't want you to use linebreaks --> I use it for a comment system)
$cachable = false (NO, do not cache the contents --> Not sure of the impact but set to false)
You can probably see the $parsed_post line. I don't have any clue why I built that in anymore.. Hehe.. I think it was because I added a limit of 200 characters or something and ran into problems with quoted text (this was before I added the strip quote).

Then last but not least, the output to a browser client and we're done.

For those who don't want to pickup the bits and pieces, below the full code where everything is put together (again without code for db connection).

Full code

Block Disabled:      (Update License Status)  
Suspended or Unlicensed Members Cannot View Code.

Conclusion
Well there you go, connect it to a database, get the PATH to your forum right and put it in a php file and see if it works. Hope this was useful to some people and gives a bit more insight of what is needed to fetch information from post and parse bb-code. And if anyone has suggestions, please be my guest, can only be beneficial to us all

Last edited by Digma; 21 Apr 2010 at 13:19.. Reason: Noticed a typo
Views: 4997
Reply With Quote
Comments
  #2  
Old 30 Apr 2010, 23:11
jazzyname jazzyname is offline
 
Join Date: Jan 2009
nice, thank you for sharing.
Reply With Quote
  #3  
Old 26 Aug 2010, 22:31
AndrewRich's Avatar
AndrewRich AndrewRich is offline
 
Join Date: Dec 2007
Real name: Andrew Rich
Thank you! I'd gotten as far as pulling posts from the DB but was stuck on parsing the BBcode. Your code worked perfectly.
Reply With Quote
  #4  
Old 08 Sep 2010, 03:00
EG Off Grid EG Off Grid is offline
 
Join Date: May 2010
got anything for vB 4.x.x?
Reply With Quote
  #5  
Old 08 Sep 2010, 14:01
Digma Digma is offline
 
Join Date: Nov 2004
Originally Posted by AndrewRich View Post
Thank you! I'd gotten as far as pulling posts from the DB but was stuck on parsing the BBcode. Your code worked perfectly.
Glad to hear it was of some use to you.

Originally Posted by EG Off Grid View Post
got anything for vB 4.x.x?
No, I am affraid I don't. Finances don't allow the purchase of vb4.x at the moment.
Reply With Quote
  #6  
Old 01 Oct 2010, 15:27
as7apcool's Avatar
as7apcool as7apcool is offline
 
Join Date: Feb 2009
thanks 4 article
Reply With Quote
  #7  
Old 27 Nov 2010, 23:49
kootta kootta is offline
 
Join Date: May 2009
thanks for that USEFUL POST
Reply With Quote
  #8  
Old 01 Jul 2011, 15:11
mihai11 mihai11 is offline
 
Join Date: Dec 2005
Why not do this?


Block Disabled:      (Update License Status)  
Suspended or Unlicensed Members Cannot View Code.

So that you don't need to count the number of posts?
Reply With Quote
  #9  
Old 02 Jul 2011, 07:46
Digma Digma is offline
 
Join Date: Nov 2004
Looks like a working alternative, have you tried it yourself?
Reply With Quote
  #10  
Old 02 Jul 2011, 08:48
mihai11 mihai11 is offline
 
Join Date: Dec 2005
Originally Posted by Digma View Post
Looks like a working alternative, have you tried it yourself?
I am using a very similar SQL: if you don't want the first post (if you regard the first post as the article and the rest as comments) you can add the condition parentid != 0.

The full SQL would be:


Block Disabled:      (Update License Status)  
Suspended or Unlicensed Members Cannot View Code.

This is what I use currently.

Anyway, there is no reason why this should not work - after all, programing is just a form of mathematics
Reply With Quote
  #11  
Old 13 Apr 2012, 18:02
mahmo0od mahmo0od is offline
 
Join Date: Nov 2011
thank u friend
i will try and come back to tell you the results

back soon >>>>>
Reply With Quote
  #12  
Old 24 Jun 2012, 14:49
mohammad6006's Avatar
mohammad6006 mohammad6006 is offline
 
Join Date: May 2008
Real name: Mohammad
Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in forum/includes/class_bootstrap.php on line 26
__________________
http://forum.tractorfc.com
Reply With Quote
Reply

Similar Article
Article Author Type Replies Last Post
Show all posts on one page Andreas vBulletin 3.0 Full Releases 16 27 Mar 2008 18:56



Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Article Options

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


New To Site? Need Help?

All times are GMT. The time now is 16:56.

Layout Options | Width: Wide Color: