修正dedecms自由列表生成html时,一个栏目超过1页的逻辑处理的错误

本文探讨了一个关于PHP分页处理与HTML静态文件生成的问题。主要关注如何正确处理分页逻辑,确保所有页面都能被正确生成并显示正确的页码。文章详细分析了代码中存在的问题,并提出了修改建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

makehtml_freelist_action.php?mkpage=51&maxpagesize=50&startid=18&endid=18&pageno=0这个php


//如果栏目的文档太多,分多批次更新
if($ntotalpage<=$maxpagesize)
{
 $lv->MakeHtml();
 $finishType = true;
  $nextpage = $pageno+1;//这句应该写到二个{}中来,原来的放到外面,如果出现大于50的情况时就只生成前面的50页后就说完成了,但是页码却显示大于50,如我的是64页,但是html只生成到50,而页码却显示64页.
}else
{
 $lv->MakeHtml($mkpage,$maxpagesize);
 $finishType = false;
 $mkpage = $mkpage + $maxpagesize;
 if( $mkpage >= ($ntotalpage+1) )
 {
  $finishType = true;
  $nextpage = $pageno+1;
 }
}
$lv->Close();
if($nextpage==$totalpage)
{


而在这个phhp引用 的class中就是makehtml中,在大开页码时,不加上1


 //列表创建HTML
 function MakeHtml($startpage = 1, $makepagesize = 0) {
  $this->LoadTemplet();

//echo "<pre>",print_r($this->FLInfos),"</pre>";

  $murl = "";
  if (empty ($startpage)) {
   $startpage = 1;
  }
  $this->ParseTempletsFirst();
  $totalpage = ceil($this->TotalResult / $this->PageSize);
  if ($totalpage == 0) {
   $totalpage = 1;
  }
  if ($makepagesize > 0) {
   $endpage = $startpage + $makepagesize;
  } else {
   $endpage = ($totalpage +1);
  }
  if ($endpage > ($totalpage +1)) {
   $endpage = $totalpage + 1;//这里要加上1,要不,最后那码最是不生成html
  }
  $firstFile = '';
  for ($this->PageNo = $startpage; $this->PageNo < $endpage; $this->PageNo++) {
   $this->ParseDMFields($this->PageNo, 1);

 

 

二个页面的错误会导致超过1页,只生成前面50页,却显示超过50页的页码显示,那么点击后面的肯定不存在了,

 

而class中的错误导致在超过1页时,最后那页不生成html,因为其它判断上都加1,且for中使用了<并没有=

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值