分页功能

时间:2010-07-15 08:20:53

标签: php

我正在尝试制作一个由Jonathan Sampson制作的分页脚本(得到他的优秀视频教程的功劳)到一个函数中,这样我就不必在每个我想要分页的页面上写它,所以我可以在我的网站上使用它而不需要在每个页面上都有分页代码:)

我以为我会使用该函数传递查询并且效果很好:

function pagination_query($query, $table = false, $column = false)
{

// Create some variables
$pageNumber = (isset($_GET['page']) && is_numeric($_GET['page'])) ? $_GET['page'] : 1;

// Establish number of results per page
$perPage = 5;

// Establish a padding value
$padding = 3;

// Get Start index of results
$startIndex = ($pageNumber * $perPage) - $perPage;

// Get total number of database entries
$totalCount = "SELECT COUNT(*) as 'Total' FROM $table $column";
$rsCount = mysql_query($totalCount) or die (mysql_error());
$rowCount = mysql_fetch_object($rsCount);

----- non essential stuff removed -----

// Get page results
$sql = "$query 
        LIMIT $startIndex, $perPage";
// Get result set
$query = mysql_query($sql) or die(mysql_error());

return $query;
}

使用中:

$query = pagination_query("SELECT id, message 
FROM posts WHERE topicid = 1 
ORDER BY id", 'posts', 'WHERE topicid = 1');


if (mysql_num_rows($query)> 0) {
// Show the results
while($row = mysql_fetch_object($query)) {
print "<div>";
print $row->id;
print ": ";
print substr($row->message, 0, strrpos(substr($row->message, 0, 50), ' ')) . '...';
print "</div>";
} 
}

我只是想通了这个,我只能在页面上的一个地方打印链接。 有什么想法吗?

你们对我的解决方案有什么看法?有更智能,更好的方式吗?

2 个答案:

答案 0 :(得分:0)

您应该使用专门用于此的库而不是编写自己的代码。一个例子是PEAR Pager

答案 1 :(得分:0)

使用LIMIT子句可以简单地实现PHP / MySQL中的分页。

最初,您必须计算总记录数并将其除以每页的记录数。

将页码与REQUEST一起传递。

从REQUEST数组中读取页码,找出页面的起始记录。

您可以在下一页

进一步阅读并查看完整的实施

http://www.csnotes32.com/2014/11/page-wise-or-paginated-listing-of-data.html