PDA

View Full Version : Getting Last 10 Posts but not including posts in staff forum


JackFranklin
11-15-2008, 02:15 PM
I am currently working on a homepage for my site which will get the latest posts and so on.

I have managed to select the most 10 recent posts from the vb_post table and display them, but I am struggling to make sure I do not display posts were the forum it is posted in is the staff forum

Someone mentioned a JOIN but I have no idea what to do.

Can anyone help?

Thanks.

Lynne
11-15-2008, 02:52 PM
It would help if you posted the query you are using. If you are querying the post table, then you will probably have to join with the thread table on post.threadid = thread.threadid and then do AND thread.forumid <> xx (where xx is your staff forum). I can never figure out if its just a JOIN or a INNER JOIN or OUTER JOIN or LEFT JOIN or RIGHT JOIN of *whatever* JOIN, so hopefully someone else can come help after you post your query.

JackFranklin
11-15-2008, 02:53 PM
Thanks for your help.

This is my query so far:

$query = "SELECT * FROM vb_post WHERE visible = 1 ORDER BY postid DESC LIMIT 0, 10";

IF I change it to this:

$query = "SELECT * FROM vb_post, vb_thread WHERE visible = 1 AND vb_post.threadid = vb_thread.threadid AND vb_thread.forumid <> 4 ORDER BY postid DESC LIMIT 0, 10";

I get the error:


Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/thesno/public_html/getnews.php on line 22

--------------- Added 1226769124 at 1226769124 ---------------

I did it! Not the best way do to it I'm sure would be grateful if someone could show a better way but this works:

$query = "SELECT * FROM vb_post WHERE visible = 1 ORDER BY postid DESC LIMIT 0, 10";
$result = mysql_query($query);
while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$sql = "SELECT forumid FROM vb_thread WHERE threadid = '$row[threadid]' LIMIT 0, 10";
$theresult = mysql_query($sql);
while ($data = mysql_fetch_array($theresult, MYSQL_ASSOC)) {
if ($data[forumid] != 4) {

$text = substr($row[pagetext], 0, 20);
echo '<strong><a href="http://www.fmstyle.co.uk/member.php?u='.$row[userid].'">'.$row[username].'</a></strong>';
echo '<p>'.$text.'... [[';
echo '<a href="http://www.fmstyle.co.uk/showthread.php?t='.$row[threadid].'">Go to Thread</a>';
echo ']]</p>';
}
}
}

Lynne
11-15-2008, 03:54 PM
I was thinking of something more along this line:
$query = "SELECT * FROM vb_post
INNER JOIN vb_thread AS thread ON(thread.threadid = post.threadid)
WHERE visible = 1 AND thread.forumid <> xx
ORDER BY postid DESC LIMIT 0, 10";

One query to grab what you want.

JackFranklin
11-16-2008, 02:46 PM
When I use that I get the error
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/thesno/public_html/index2.php on line 72

Anyone else got any ideaS?

Lynne
11-16-2008, 02:59 PM
When I use that I get the error
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/thesno/public_html/index2.php on line 72

Anyone else got any ideaS?
What is your whole code if you use that line?