2011-12-30 130 views
0

我正在显示数据库中的一些记录。目前,我正在显示前20条记录,但我希望每页显示20条记录的所有记录。如何使用分页显示数据库中的记录?

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

对此的任何想法?

+0

的可能重复(HTTP [分页用PHP?]:// stackoverflow.com/questions/2117342/paging-with-php)([php paging]的第一个结果(http://stackoverflow.com/search?q=php+paging),因为在你的问题中没有任何coni在去通过。) – mario 2011-12-30 05:51:07

回答

2

像这样的东西可能会奏效:

$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除以总数,也是当前页面,则可以显示prev和next链接:

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>'; 
} 
1

的基本思想是发送页面变量,例如$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; 
相关问题