设计分页界面的最佳方法

时间:2012-02-02 19:14:32

标签: php javascript mysql html

我正在创建一个网站,其中包含页面下方列出的文章(包含其内容)。想想博客风格。但是,我认为在一个页面上完整显示50篇文章会有点荒谬,所以我想知道将页面自动分成页面的最佳方法是什么。

我正在使用PHP和MySQL从数据库中获取文章。

4 个答案:

答案 0 :(得分:2)

一些可以混合并与其他东西匹配的建议。

  1. 查询X篇文章。在页面底部有一个链接,转到下一个X号码,查询上一篇文章显示后开始的X篇文章。确切的代码取决于你如何组织事物,但实质上只是调用X文章1页的内容,然后给你的动态页面一个值,从而给它一个偏移开始。
  2. 特别好,如果你有很长的文章,使用一些ajax甚至只是好的老式的javascript来“扩展”文章。将他们的显示限制在第一段左右,然后有一个“阅读更多”按钮,显示文章内容的其余部分。如果它嵌入在页面中并使用css和javascript隐藏/显示,它仍将被搜索引擎索引。
  3. 可能比以前的SEO目的更好。将每篇文章放在自己的页面上,并使您的文章列表只显示第一段左右的“阅读更多”链接,以带您进入完整的文章页面。这可能更好,因为a)它很容易(KISS总是一个很好的方法)b)它为你的网站提供了更多独特的页面而没有混合关键词(对搜索引擎优化有益)c)文章可以直接和轻松地从其他网站链接(适合SEO)
  4. 只是一些想法。从来没有一种“最佳”的方式来做任何事情,只是在上下文中更有意义的方式。

答案 1 :(得分:1)

计算当前类别中的文章数量

除以每页的总金额以获得总页数。

从mysql中选择每页数量的文章,其中id>(pagenum *每页金额)

创建导航链接。

示例查询:

$sql = "SELECT * FROM articles ORDER BY date ASC LIMIT 0, 20"; // This will return the first 20

$sql = "SELECT * FROM articles ORDER BY date ASC LIMIT 40, 20"; // This will return 40-60

注意:这称为未来参考/搜索的分页。有很多很好的例子,还有一些框架可以帮你解决这个问题。

简单教程:http://www.phpfreaks.com/tutorial/basic-pagination

答案 2 :(得分:1)

我没有专门使用PHP,但执行此类操作的一般策略是根据每页所需的项目数以及应跳过的项数来设计查询以动态限制。换句话说,您的SQL遵循以下内容:

$stmt = $mysqli->prepare("SELECT id, title, createdDate FROM tArticles ORDER BY createdDate desc LIMIT :skip, :itemsPerPage");

如果您按页码跟踪此数据,则您的:skip bind参数将通过获取当前页码(从0开始)并乘以每页的项目数得出。

你应该看看the answer for this question,以避免在绑定之前需要将变量转换为整数的潜在常见缺陷。

答案 3 :(得分:1)

我记得有一次我看了Blogger如何做到这一点,而且非常有趣

这是这样的:

  • 有一个默认的post-timestamp(应该是最新的帖子)
  • 有默认display-per-page(类似于10-20)
  • 然后从post-timestamp开始搜索您的数据库 将搜索范围限制为display-per-page
  • 为搜索的最后一个帖子的post-timestamp提供“下一个”链接以及display-per-page