我正在构建一个相对简单的PHP论坛,并尝试添加一些主流板(如phpBB)的一些不错的功能。
数据库结构是简单的3表方法。类别,主题和帖子。
我正在实施最后一篇文章'每个类别和线程的功能。我已经有了最后的帖子信息,因为它存储在数据库中,这不是问题所在。我想解决的问题是如何在一个包含分页回复的帖子中链接到这篇文章,比如说每页25个。如果我的帖子是26的26号,你如何编程线程转到第二页?假设我想永久链接发布90个中的30个,您如何链接到第2页并确保正确数量的回复/页面是哪一方?
我一直试图弄清楚phpBB是如何做到这一点的,但我认为你可以花一整年的时间将这种情况分开,而不是在哪里。我看到他们将post_id作为thread_id的附加参数传递,但我无法弄清楚他们如何使用这些信息。任何想法的起点?感谢。
答案 0 :(得分:0)
我不知道phpBB是如何做到这一点的。但我要做的是用它自己的ID跟踪最后一篇文章。对于每个永久链接请求,我将'内部'呈现'线程(只是准系统,甚至不需要从数据库中获取诸如正文之类的帖子信息)。只需获取线程上的答案数量,并按照通常的逻辑将其拆分为页面。
通过这个,我可以轻松找到上一篇文章的哪个页面,而不是试图“确保”我的结果(看看系统正在做什么,不要试图将它弯曲到你的意志) ) - 然后,当然,重定向到该页面并向帖子和URL附加HTML anchor
id是一个相对简单的问题,因此浏览器会自动滚动到该帖子。
嗯,这是我的头脑。成熟的系统可能会以更优雅的方式解决它,请随时研究并在此发回:)
答案 1 :(得分:0)
你可以尝试这个例子,在20个帖子的每个页面上呈现5个帖子
查询
// get the first 5 posts<br/>
SELECT posts FROM topics WHERE topicid = 1 LIMIT 0,5
// get the next five posts<br/>
SELECT posts FROM topics WHERE topicid = 1 LIMIT 5,10
在php端,页面控件(第一页,下一页,上一页,最后一页)是表单按钮,提交表单和位置标识符,如第一页X,下一页Y,上一页Z,最后一页S ..一个网址使用GET方法
http://example.com/forum/topic.php?id=1&cur=5&next=10&previous=5&last=20
关于跟踪用户的这类信息是在主题中,可以存储在会话中还是使用POST方法提交
希望它有所帮助
答案 2 :(得分:0)
我想出了一个基于@ aditya-menon和@GeoPhoenix所说的解决方案。我已经知道总帖子了,所以我只是将每页的帖子除以得到总页数。最后一篇文章总是在最后一页上,所以这很容易。
挑战在于确定帖子在帖子中间的哪个页面。我已经运行了这样的BETWEEN
查询来计算特定帖子的帖子中有多少帖子
SELECT COUNT(post_id) FROM posts
WHERE topic_id = $TOPIC_ID AND post_id BETWEEN 0 AND $POST_ID
然后按照此号码和ceil()
分隔每页的帖子,以提供帖子所在的页码。
不太确定查询对大型论坛的效率如何,但它似乎可以完成这项工作。谢谢你们