在我的論壇上的帖子都有一個人的固定鏈接。確定頁面從帖子固定鏈接分頁論壇
帖子分頁,用戶可以按日期和評分排序。
訪問固定鏈接時,由於分頁,需要計算帖子所在的頁面。
帖子存儲在一個MySQL innodb表中自動遞增的id。
在我使用下面的計算時的職位是由他們的分數(等級)排序的時刻:
<?php
// These variables originate from the corresponding uri segments
// For example: http://domain.tld/topics/[ID]/[SLUG]/[POST_ID]
$post_id = $uri->segment(4);
$topic_id = $uri->segment(2);
$post_per_page = 10;
$query = $db->query('SELECT id FROM topic_posts WHERE topic_id = ' . $topic_id . ' ORDER BY score desc');
foreach ($query as $key => $post)
{
if ($post->id == $post_id)
{
$postOnPage = ceil(($key + 1)/$post_per_page);
break;
}
}
然而,帖子的數量會不斷增加,並獲取所有帖子似乎很尷尬。
對於日期排序我使用下面的查詢,但它不工作的等級排序的職位ID是那麼不遞增順序:
SELECT CEIL((COUNT(*) + 1)/$posts_per_page) FROM topic_posts WHERE topic_id = $topic_id AND id < $post_id;
所以...我如何避免PHP foreach循環,並實現與db查詢相同?
我相信你應該重新思考你的問題。使用兩種排序模式的帖子*是否重要?我會考慮一個選項來簡化事情,並且在處理永久鏈接時總是使用order-by-date。 –
強迫排序爲'日期'是我想要解決問題的一件事。但是,這些回覆位於每個包含原始帖子的_permalink_的帖子下方。所以當訪問這樣的固定鏈接時需要保持排序。 StackOverflow與他們的排序_tabs_具有相同的功能。不過謝謝你的建議! –