首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP分页,每10页不含SQL、MYSQL

PHP分页,每10页不含SQL、MYSQL
EN

Stack Overflow用户
提问于 2016-07-19 06:10:25
回答 2查看 73关注 0票数 0

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

我正在尝试根据我网站上的页面名称来生成分页。在下面的代码中,我实现了这一点,但我也想显示像this这样的有限页面

我不是php程序员,我的基本代码在这里…

代码语言:javascript
复制
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

如果有人能根据我的需要修改代码,我将非常高兴。

诚挚的问候,

梅特

EN

回答 2

Stack Overflow用户

发布于 2016-07-19 23:00:39

对于分页,你必须知道你在哪个页面上。如果我没理解错的话,这是最后三位数字。所以:

代码语言:javascript
复制
$currentpage = substr($_SERVER['PHP_SELF'], -3);

现在这取决于你想要做什么。如果您想要屏幕截图中的演示文稿。由于trim和sprintf对于我来说太长而无法输入,所以我将只编写link(pagename, number, caption)并假定存在这样的函数

代码语言:javascript
复制
$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;');
票数 0
EN

Stack Overflow用户

发布于 2016-09-17 21:08:10

非常感谢PHP ,根据你富有启发性的回答,我只在你的代码中修改了link()函数,因为我的版本不支持link()函数。

它可能很长,也不聪明,但它对我来说很好。再次感谢我的朋友Jakumi。

代码语言:javascript
复制
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)); 
 }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38446753

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档