我在互联网上搜索了我的问题,但找不到令人满意的解决方案。
我试图根据我网站上的页面名称生成分页。在下面的代码中,我实现了这一点,但我也想显示有限的页面,如这个
我不是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
如果有人根据我的需要帮助修改代码,我将非常高兴。
致问候,
Mete
对于分页,你必须知道你在哪个页面上。如果我理解正确的话,这是最后三位数字。因此:
$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, '»');
非常感谢Jakumi,根据你富有启发性的回答,我只是在你的代码中更改了link()函数,因为我的PHP版本不支持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));
}