Сделать так, чтобы phpbb mysql query отображал все сообщения в теме

0

... в отличие от того, что он делает в данный момент, который отображает последний ответ от КАЖДОЙ темы на специализированном форуме.

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

// Database Configuration (Where your phpBB config.php file is located)
include '../path/to/forum/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, p.post_text, 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 = 7 AND
f.forum_id = t.forum_id AND
t.forum_id = 11 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 '<div class="news_block">';
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {


echo  "<h4><a href=\"$urlPath/viewtopic.php?f=$row[forum_id]&t=$row[topic_id]&p=$row[post_id]#p$row[post_id]\" TARGET=\"\">" .
$row["topic_title"] .
"</a> </h4>By: " .
$row["username"] . ' - ' . date("l", $row["post_time"]) .
"<p>" .
$row["post_text"] . // <----- 
"</p>";
}
print "</div>";
mysql_free_result($result);
mysql_close($link);

/* date("l", $row["post_time"]) .  date('F j, Y, g:i a', $row["post_time"]) .*/
?>

Как вы могли бы сказать, я далек от кодера. Я думаю, что я сузил его, чтобы p.post_id нуждался в изменении, но независимо от того, какое целое или переменное мне кажется присвоено, я не могу получить желаемый эффект. Было бы очень полезно помочь на этом этапе. Благодарю.

Теги:
phpbb

1 ответ

0
Лучший ответ

Я думаю, вам нужно удалить эту часть из запроса:

AND p.post_id = t.topic_last_post_id 

Прямо сейчас вы запрашиваете сообщение (только одно), которое имеет тот же идентификатор, что и последний пост темы, но вы не хотите получать только последний. Вы хотите получить все сообщения.

Изменение: вы должны посмотреть на свою базу данных и проверить, есть ли какой-либо внешний ключ в вашей таблице сообщений, относящийся к теме.

Подумайте об этом так: каждый форум имеет много тем, каждая тема имеет много сообщений, и у каждого сообщения есть ровно один пользователь. Таким образом, вы должны иметь связь между таблицами, которые вы можете использовать, чтобы определить, как совпадают строки.

Таким образом, ссылки очень полезны. Если вы работаете с готовой схемой базы данных, которая уже содержит эти внешние ключи, объединения помогут вам связать ваши запросы.

Это будет хорошо сформированный запрос, содержащий мои объяснения.

SELECT 
    *
FROM
    $table_forums f
        LEFT JOIN
    $table_topics t ON t.forum_id = f.forum_id
        LEFT JOIN
    $table_posts p ON t.topic_id = p.topic_id
        LEFT JOIN
    $table_users u ON p.poster_id = u.user_id
WHERE
    t.topic_id = 7 AND t.forum_id = 11
        AND t.topic_status <> 2
ORDER BY p.post_id DESC
LIMIT $TOPICNUMBER
  • 0
    Эй, приятель, спасибо, что нашли время посмотреть на это. Я пытался сделать это несколько раз, и затем он выводит все сообщения, сделанные по каждой теме на форумах, и выводит их на страницу с заголовком предполагаемой темы. Надеюсь, это имеет смысл? Так что у меня есть ответы из КАЖДОЙ темы на форуме. Я думаю, мне нужно дополнительно уточнить, что я хочу, чтобы он печатал ТОЛЬКО с (в данном случае) форума 11, тема 7, но как это сделать помимо того, что у меня уже есть, я не знаю. Именно это и привело меня к мысли, что я должен каким-то образом манипулировать p.post_id, но я потерян для подсказок.
  • 0
    Понял. Есть ли в таблице сообщений fk, которая относится к теме / форуму, к которому она относится? Вы должны убедиться, что сообщение так или иначе связано с темой или форумом.
Показать ещё 8 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню