PHP分页为每十个没有SQL的页面,MYSQL


PHP Pagination for each ten pages without SQL, MYSQL

我在互联网上搜索了我的问题,但找不到令人满意的解决方案。

我试图根据我网站上的页面名称生成分页。在下面的代码中,我实现了这一点,但我也想显示有限的页面,如这个

我不是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>&nbsp;&nbsp;&nbsp;', $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, '&laquo;');
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, '&raquo;');

非常感谢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">&laquo;</a>&nbsp;&nbsp;&nbsp;', $PN,  $prev, $prev)); 
echo ltrim(sprintf('<a href="%s_%02d">%02d</a>&nbsp;&nbsp;&nbsp;', $PN, $first, $first));   
if ($low-1 != $first) { echo '... &nbsp;&nbsp;&nbsp;'; }
for($x = $low; $x <= $high; $x++) {
echo ltrim(sprintf('<a href="%s_%02d">%02d</a>&nbsp;&nbsp;&nbsp;', $PN, $x, $x));   
 }
 if ($high+1 != $TP) { echo '... &nbsp;&nbsp;&nbsp;'; }
 echo ltrim(sprintf('<a href="%s_%02d">%02d</a>&nbsp;&nbsp;&nbsp;', $PN, $TP, $TP));    
 echo ltrim(sprintf('<a href="%s_%02d">&raquo;</a>&nbsp;&nbsp;&nbsp;', $PN, $next, $next)); 
 }