在我的论坛上的帖子都有一个人的固定链接。确定页面从帖子固定链接分页论坛
帖子分页,用户可以按日期和评分排序。
访问固定链接时,由于分页,需要计算帖子所在的页面。
帖子存储在一个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_具有相同的功能。不过谢谢你的建议! –