Последние форумы PHP не отображают некоторые форумы - PullRequest
0 голосов
/ 04 сентября 2010

Я установил способ отображения последних 5 сообщений на главной странице моего сайта. Я хотел бы спрятать 3 конкретных форума (я просмотрел идентификаторы, а их 24, 25, 35. На всякий случай это что-то значит). Я могу заставить их скрыть, однако, это не покажет 5 сообщений. Поэтому я хочу показать 5 последних пропущенных этих 3 форумов, но при этом отобразить следующие 5. Это также форум phpBB, который тоже что-то значит.

Ниже мой php код.

 $recent = mysql_query("SELECT * FROM forum_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'];

  if ($forum_id != 24 && $forum_id != 25 && $forum_id != 35){
   //Get Topic Name
   $topic_name = mysql_query("SELECT topic_title FROM forum_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 forum_users WHERE user_id='$poster_id'");
   $username = mysql_fetch_assoc($username);
   $username = $username['username'];

   echo "<a href = 'http://www.ravenwolfguild.net/forum/memberlist.php?mode=viewprofile&u=$poster_id' class = 'LinkStyle'>$username</a> posted in \"".
   "<a href = 'http://www.ravenwolfguild.net/forum/viewtopic.php?f=$forum_id&t=$topic_id&p=$post_id#p$post_id' class = 'LinkStyle'>$topic_name</a>\"<br>";
  }
 }
?>

Ответы [ 2 ]

1 голос
/ 04 сентября 2010

Похоже, вы заранее знаете идентификаторы, которые должны быть отклонены.Затем сделайте это в первом запросе -

$recent = mysql_query("SELECT * FROM forum_posts where forum_id NOT IN (24, 25, 35) ORDER BY post_time DESC LIMIT 5"); 

По-прежнему извлекает 5 результатов, исключая нежелательные

И ниже приводится консолидированный запрос, который выполняет ту же задачу, что и ваши 3 запроса

$recent = mysql_query("SELECT fposts.username FROM forum_posts as fposts INNER JOIN forum_topics AS ftopics ON (ftopics.topic_id = fposts.topic_id)
INNER JOIN forum_users AS fusers ON (fusers.user_id = forum_posts.poster_id)

WHERE fposts.forum_id NOT IN (24, 25, 35) ORDER BY fposts.post_time DESC LIMIT 5");

while ($recent_row = mysql_fetch_assoc($recent))
{
     echo "$username posted in \"". "$recent_row['username']\""; 
}
0 голосов
/ 04 сентября 2010

Все в одном запросе:

$query = "
SELECT *, 
(SELECT ft.topic_title FROM forum_topics ft WHERE ft.topic_id= fp.topic_id) topic_title, 
(SELECT fu.username FROM forum_users fu WHERE fu.user_id= fp.poster_id) username 
FROM fp.forum_posts 
where fp.id not in (24, 25, 35) 
group by fp.forum_id 
ORDER BY fp.post_time DESC 
LIMIT 5";
...