我在网上搜索了我的问题,但没有找到令人满意的解决方案。
我正在尝试根据我网站上的页面名称来生成分页。在下面的代码中,我实现了这一点,但我也想显示像this这样的有限页面
我不是php程序员,我的基本代码在这里…
function Pagination($TotalPage)
{
$PageName= substr(basename ( $_SERVER['PHP_SELF'] ) , 0, (strlen(basename ( $_SERVER['PHP_SELF'] ) )-3));
for ($x = 1; $x <= $TotalPage; $x++)
{
echo ltrim((sprintf('<a href="%s_%03d">%03d</a> ', $PageName, $x, $x)));
}
}(我正在从文件名中检索页面链接,并逐个增加它们)
当运行此代码时,它会显示所有页面,如下所示(在页面的下方):http://www.mcuma.com/doku.php/mesnevi/birinci_cilt_001
如果有人能根据我的需要修改代码,我将非常高兴。
诚挚的问候,
梅特
发布于 2016-07-19 23:00:39
对于分页,你必须知道你在哪个页面上。如果我没理解错的话,这是最后三位数字。所以:
$currentpage = substr($_SERVER['PHP_SELF'], -3);现在这取决于你想要做什么。如果您想要屏幕截图中的演示文稿。由于trim和sprintf对于我来说太长而无法输入,所以我将只编写link(pagename, number, caption)并假定存在这样的函数
$first = 1; // this is a magic var.
$range = 3; // as is this.
$prev = max($currentpage-1, $first); // find prev
$low = max($currentpage-$range, $first+1); // clip low
$high = min($currentpage+$range, $TotalPage-1); // clip high
$next = min($currentpage+1, $TotalPage); // find next
link($PageName, $prev, '«');
link($PageName, $first, $first);
if ($low-1 != $first) { echo '...'; }
for($x = $low; $x <= $high; $x++) {
link($PageName, $x, $x);
}
if ($high+1 != $TotalPage) { echo '...'; }
link($pageName, $TotalPage, $TotalPage);
link($PageName, $next, '»');发布于 2016-09-17 21:08:10
非常感谢PHP ,根据你富有启发性的回答,我只在你的代码中修改了link()函数,因为我的版本不支持link()函数。
它可能很长,也不聪明,但它对我来说很好。再次感谢我的朋友Jakumi。
function PG($TP)
{
$PN= substr(basename ( $_SERVER['PHP_SELF'] ) , 0, (strlen(basename ( $_SERVER['PHP_SELF'] ) )-3)); // page name
$currentpage = intval(substr($_SERVER['PHP_SELF'], -2)); // page number as integer
$first = 1; // this is a magic var.
$range = 10; // as is this.
$prev = max($currentpage-1, $first); // find prev
$low = max($currentpage-$range, $first+1); // clip low
$high = min($currentpage+$range, $TP-1); // clip high
$next = min($currentpage+1, $TP); // find next
echo ltrim(sprintf('<a href="%s_%02d">«</a> ', $PN, $prev, $prev));
echo ltrim(sprintf('<a href="%s_%02d">%02d</a> ', $PN, $first, $first));
if ($low-1 != $first) { echo '... '; }
for($x = $low; $x <= $high; $x++) {
echo ltrim(sprintf('<a href="%s_%02d">%02d</a> ', $PN, $x, $x));
}
if ($high+1 != $TP) { echo '... '; }
echo ltrim(sprintf('<a href="%s_%02d">%02d</a> ', $PN, $TP, $TP));
echo ltrim(sprintf('<a href="%s_%02d">»</a> ', $PN, $next, $next));
}https://stackoverflow.com/questions/38446753
复制相似问题