我有标准的分页,效果很好。我想做的是把它倒过来。所以导航将从最后开始。 5 | 4 | 3 | 2 | 1.我每页的限制是 15,所以我希望第 1 页包含 15 个元素,最后一页将包含最新元素。我知道这是一种非常不寻常的方法,但这是我想做的。但我需要有人让我走上正确的道路并提供一点帮助。谢谢。
我的功能代码在这里:(缩短)
<?
$adjacents = 4;
$result = $mysqli->query("SELECT * FROM table");
$total_pages = $result->num_rows;
$result->close();
/* Setup vars for query. */
$targetpage = "articles";
$limit = 15;
$page = $_GET['page'];
if($page)
$start = ($page - 1) * $limit;
else
$start = 0;
/* Get data. */
$sql = $mysqli->query("SELECT * FROM table ORDER BY id DESC LIMIT $start, $limit");
/* Setup page vars for display. */
if ($page == 0) $page = 1; //if no page var is given, default to 1.
$prev = $page - 1; //previous page is page - 1
$next = $page + 1; //next page is page + 1
$lastpage = ceil($total_pages/$limit); //lastpage is = total pages / items per page, rounded up.
$lpm1 = $lastpage - 1; //last page minus 1
while($row = $sql->fetch_array()) {
$name = $row['name'];
$ource = $row['source'];
}
?>
<?=$pagination?>
<? $sql->close(); ?>
最佳答案
嗯...第一个提示 - 不要使用简短的 php 开头标签。它们已被弃用,可能会给您在某些服务器上带来问题。使用 <?php
启动 php 代码.
其次,在您的代码中,您混合了显示寻呼机和页面内容的部分。该 mySql 查询用于获取当前页面的行。但是对于寻呼机,您将需要类似的查询,它将只返回所有行的计数(因此没有限制部分)。
$sql = $mysqli->query("SELECT COUNT(*) FROM table");
类似的东西......
当您获得该计数时(假设您总共有 45 行)。您必须计算总页数。这就像:
$pages_number = ceil ($rows_count / $limit );
在我们的例子中,我们将有 3(页)。
然后,您需要一些 for 循环,从页数到 1,例如:
for ($i = $pages_number; $i > 1; $i--){
// write out current link
}
这个循环会给你数字 3,2,1...所以用它们创建链接并打印出来。
关于PHP分页颠倒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32416484/