【问题标题】:how to use paging in displaying records from the database?如何使用分页来显示数据库中的记录?
【发布时间】:2011-12-30 05:47:17
【问题描述】:

我正在显示数据库中的一些记录。目前我正在显示前 20 条记录,但我想显示每页 20 条记录的所有记录。

我将如何使用 php 中的分页来显示所有记录?'

对此有什么想法吗?

【问题讨论】:

  • paging with php? 的可能重复项(php paging 的第一个结果,因为您的问题中没有任何具体内容可供参考。)

标签: php


【解决方案1】:

这样的事情可能会奏效:

$posts_per_page = 10;
$page = isset($_GET['page']) ? intval($_GET['page']) : 0;
$query = sprintf("SELECT * FROM <table> LIMIT %d, %d", 
                  $page * $post_per_page, 
                  $posts_per_page);
$result = mysql_query($query);

上述查询将根据当前页面选择 10 条具有偏移量的记录。 您还必须根据$posts_per_page 获取总页数:

$query = "SELECT COUNT(*) c FROM <table>";

您必须跟踪以$posts_per_page 划分的帖子总数以及当前页面,然后您可以显示上一个和下一个链接:

if ($current_page > 0) {
   echo '<a href="index.php?page=' . ($current_page - 1) . '>prev</a>';
} 
if ($current_page < $max_pages - 1) {
   echo '<a href="index.php?page=' . ($current_page + 1) . '>next</a>';
}

【讨论】:

    【解决方案2】:

    基本思想是将页面变量(例如 $page)发送到您的脚本,然后自定义 MySQL 查询以仅检索该页面的结果。

    这是一个例子,你可以明白我的意思:

    $page = $_GET['page'];
    $resultsPerPage = 20;
    $start = ($page - 1) * $resultsPerPage;
    $query = "SELECT `results` FROM `table` WHERE ... ORDER BY `date` LIMIT $start, $resultsPerPage"
    

    您可以看到如果$page = 1,然后$start = 0,此查询将检索 20 个结果,偏移量为 0。对于$page = 2$start = 20,因此查询将检索从 20 到 40 的结果,这应该显示在第二页上。

    这里假设你的第一页是1。如果你希望第一页是0,那么你需要更改$start

    $start = $page * $resultsPerPage;
    

    【讨论】:

      猜你喜欢
      • 2022-07-27
      • 1970-01-01
      • 2015-08-12
      • 1970-01-01
      • 1970-01-01
      • 2016-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多