【问题标题】:Pagination with PHP and MySQL使用 PHP 和 MySQL 进行分页
【发布时间】:2011-07-18 02:42:46
【问题描述】:

我已经尝试了许多不同的代码 sn-ps,它们可以在我的结果集中使用分页。在每种情况下我都有同样的问题。在查询结束时使用 LIMIT 我可以正确显示第一页以及正确页数的导航链接(因此使用返回的行数和在每页上显示的数字进行计算的代码是正确的),但是当您单击链接到任何其他页面时,它们是空白的。那么如何让更新后的查询再次运行并在后续页面上显示我的结果呢?

这是我尝试过的一段代码:

$rowsperpage = 10;
$totalpages = ceil($numrows / $rowsperpage);

// get the current page or set a default
if (isset($_GET['currentpage']) && is_numeric($_GET['currentpage'])) { $currentpage = (int) $_GET['currentpage']; } 
else { $currentpage = 1; } 

// if current page is greater than total pages...
if ($currentpage > $totalpages) { $currentpage = $totalpages; } 

// if current page is less than first page...
if ($currentpage < 1) { $currentpage = 1; } 

// the offset of the list, based on current page 
$offset = ($currentpage - 1) * $rowsperpage;

// run the query
$sql = "SELECT * FROM table WHERE keyword LIMIT $offset, $rowsperpage";
$result = mysql_query($sql, $link) or trigger_error("SQL", E_USER_ERROR);
// while there are rows to be fetched...
while ($list = mysql_fetch_assoc($result)) 
{   
     //echo data for each record here
} 

// building pagination links 
$range = 3;

// if not on page 1, don't show back links
if ($currentpage > 1) {   
    // show << link to go back to page 1   
    echo " <a href='{$_SERVER['PHP_SELF']}?currentpage=1'><<</a> ";   
    // get previous page num   
    $prevpage = $currentpage - 1;   
    // show < link to go back to 1 page   
    echo " <a href='{$_SERVER['PHP_SELF']}?currentpage=$prevpage'><</a> ";
} // end if 

由于href太多,不允许显示其余导航代码,但链接显示正确。问题似乎在于查询是如何转移到下一页的。

【问题讨论】:

  • 示例代码可能会有所帮助,您是如何传递页面的?得到请求?
  • 贴出一些代码,让我们看看哪里出了问题。
  • 您是否正确构建了导航链接。

标签: php mysql pagination


【解决方案1】:

你必须使用limit offset, rowcount

通常用于nth page

offset= (n-1)*pagesizerowcount=pagesize

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-21
    • 2011-04-25
    • 2015-05-16
    • 2011-10-09
    • 2014-04-11
    相关资源
    最近更新 更多