Jump to content

Recommended Posts

Hey All?

 

so I have thsi script in place that returns the last 5 forum post based on time, however I have also set them to an array returning all 5 results

 

I want to be ablet to plug the first on in somewhere then plug the second somewhere and so forth...

 

I tried to use an echo $topic_name but thats shoots out all 5 results..

 

any ideas? is there a way to use echo and limit the output then use it again and it would start at the second one?

 

<?php

 

include("connect.php");

 

mysql_select_db("heaven_forum");

 

 

$recent = mysql_query("SELECT * FROM phpbb_posts ORDER BY post_time DESC LIMIT 5");

while ($recent_row = mysql_fetch_assoc($recent))

{

//get data

$post_id = $recent_row['post_id'];

$topic_id = $recent_row['topic_id'];

$forum_id = $recent_row['forum_id'];

$poster_id = $recent_row['poster_id'];

$post_time = $recent_row['post_time'];

 

 

//get topic name

$topic_name = mysql_query("SELECT topic_title FROM phpbb_topics WHERE topic_id='$topic_id'");

$topic_name = mysql_fetch_assoc($topic_name);

$topic_name = $topic_name['topic_title'];

 

//get username

$username = mysql_query("SELECT username FROM phpbb_users WHERE user_id='$poster_id'");

$username = mysql_fetch_assoc($username);

$username = $username['username'];

 

echo $topic_name;

echo "Posted By: $username";

 

 

 

}

 

 

?>[code=php:0]

Link to comment
https://forums.phpfreaks.com/topic/221446-is-there-a-way-to-do-this/
Share on other sites

First, I'd look at trying to reduce this to a single query using JOIN's. Forums should be highly trafficked so I imagine performance will play a major part.

 

On your problem, though I would advise against getting comfortable with these 3 queries, is to use arrays (or objects).

 

if you don't know how to use arrays this might be hard to grasp.

 

For each row - each while() you are doing, you need to store all of that data in between into an array.

 

So, for example, to do that with the first variable:

 

$n=0;
while ($recent_row = mysql_fetch_assoc($recent))
{
$n++;
//get data
$forumPosts[$n]['post_id'] = $recent_row['post_id'];


 

Then you can try var_dump() or print_r() to check the output. You can replace $n with whatever key you like but it must be unique to avoid conflict. If you just do that above and print out the array you will see the 5 posts contained within an array with the id set for each. You can then refer to each individual array using:

 

echo $forumPosts[1]['post_id'];

echo $forumPosts[1]['post_time'];

 

etc

 

Hope that helps. Again, try to compress this into a single query though. You're currently running about 11 queries in this small loop.

 

 

[quote author=desjardins2010 link=topic=318075.msg1499736#msg1499736 date=1292200090]
$recent = mysql_query("SELECT * FROM phpbb_posts ORDER BY post_time DESC LIMIT 5");
[code=php:0]
[/quote]
You only really need 1 query.
[code=php:0]$recent = mysql_query(
"SELECT phpbb_posts.id AS post_id, 
  phpbb_posts.topic_id AS topic_id,
  phpbb_posts.forum_id AS forum_id,
  phpbb_posts.poster_id AS poster_id,
  phpbb_topics.topic_title AS title,
  phpbb_users.username AS username
FROM phpbb_posts, 
  phpbb_topics ON phpbb_posts.topic_id=phpbb_topics.id, 
  users ON phpbb_posts.poster_id=users.id
ORDER BY post_time DESC LIMIT 5");

[quote author=desjardins2010 link=topic=318075.msg1499736#msg1499736 date=1292200090]
$recent = mysql_query("SELECT * FROM phpbb_posts ORDER BY post_time DESC LIMIT 5");
[code=php:0]
[/quote]
You only really need 1 query.
[code=php:0]$recent = mysql_query(
"SELECT phpbb_posts.id AS post_id, 
  phpbb_posts.topic_id AS topic_id,
  phpbb_posts.forum_id AS forum_id,
  phpbb_posts.poster_id AS poster_id,
  phpbb_topics.topic_title AS title,
  phpbb_users.username AS username
FROM phpbb_posts, 
  phpbb_topics ON phpbb_posts.topic_id=phpbb_topics.id, 
  users ON phpbb_posts.poster_id=users.id
ORDER BY post_time DESC LIMIT 5");

 

There's the magic :) sql not my strong point. I need to brush up on structure of these queries.

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.