... в отличие от того, что он делает в данный момент, который отображает последний ответ от КАЖДОЙ темы на специализированном форуме.
<?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 нуждался в изменении, но независимо от того, какое целое или переменное мне кажется присвоено, я не могу получить желаемый эффект. Было бы очень полезно помочь на этом этапе. Благодарю.
Я думаю, вам нужно удалить эту часть из запроса:
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