专栏首页www.96php.cnDiscuz分页函数及使用

Discuz分页函数及使用

该函数在 ./include/global.func.php 文件中定义。函数原型为:

string multi(int $num, int $perpage, int $curpage, string $mpurl[, int $maxpages[, int $page[, bool $autogoto[, bool $simple]]]])

$num: 总记录数

$perpage: 每页记录数

$curpage: 当前页数

$mpurl: 除页变量外 URL

$maxpages: 最大页面值

function multi($num, $perpage, $curpage, $mpurl, $maxpages = 0, $page = 10, $autogoto = TRUE, $simple = FALSE) {
  global $maxpage;
  $ajaxtarget = !empty($_GET['ajaxtarget']) ? " ajaxtarget=\"".dhtmlspecialchars($_GET['ajaxtarget'])."\" " : '';
 
  $multipage = '';
  $mpurl .= strpos($mpurl, '?') ? '&' : '?';
  $realpages = 1;
  if($num > $perpage) {
    $offset = 2;
 
    $realpages = @ceil($num / $perpage);
    $pages = $maxpages && $maxpages < $realpages ? $maxpages : $realpages;
 
    if($page > $pages) {
      $from = 1;
      $to = $pages;
    } else {
      $from = $curpage - $offset;
      $to = $from + $page - 1;
      if($from < 1) {
        $to = $curpage + 1 - $from;
        $from = 1;
        if($to - $from < $page) {
          $to = $page;
        }
      } elseif($to > $pages) {
        $from = $pages - $page + 1;
        $to = $pages;
      }
    }
 
    $multipage = ($curpage - $offset > 1 && $pages > $page ? '<a href="'.$mpurl.'page=1"'.$ajaxtarget.'>1 ...</a>' : '').
      ($curpage > 1 && !$simple ? '<a href="'.$mpurl.'page='.($curpage - 1).'"'.$ajaxtarget.'>&lsaquo;&lsaquo;</a>' : '');
    for($i = $from; $i <= $to; $i++) {
      $multipage .= $i == $curpage ? '<strong>'.$i.'</strong>' :
        '<a href="'.$mpurl.'page='.$i.($ajaxtarget && $i == $pages && $autogoto ? '#' : '').'"'.$ajaxtarget.'>'.$i.'</a>';
    }
 
    $multipage .= ($curpage < $pages && !$simple ? '<a href="'.$mpurl.'page='.($curpage + 1).'"'.$ajaxtarget.'>&rsaquo;&rsaquo;</a>' : '').
      ($to < $pages ? '<a href="'.$mpurl.'page='.$pages.'"'.$ajaxtarget.'>... '.$realpages.'</a>' : '').
      (!$simple && $pages > $page && !$ajaxtarget ? '<kbd><input type="text" name="custompage" size="3" onkeydown="if(event.keyCode==13) {window.location=\''.$mpurl.'page=\'+this.value; return false;}" /></kbd>' : '');
 
    $multipage = $multipage ? '<div>'.(!$simple ? '<em>&nbsp;'.$num.'&nbsp;</em>' : '').$multipage.'</div>' : '';
  }
  $maxpage = $realpages;
  return $multipage;
}

使用:

$pagesize = 20;  // 每页记录数
$query = $db->query("SELECT COUNT(*) FROM table");
$amount = $db->result($query, 0);  // 查询记录总数
$pagecount = $amount ? (($amount < $pagesize) ? 1 : (($amount % $pagesize) ? ((int)($amount / $pagesize) + 1) : ($amount / $pagesize))) : 0;  // 计算总页数
$page = !empty($_GET['page']) ? max(1, intval($_GET['page'])) : 1;
$page = $page > $pagecount ? 1 : $page;  // 取得当前页值
$startlimit = ($page - 1) * $pagesize;  // 查询起始的偏移量
 
$query = $db->query("SELECT * FROM table LIMIT {$startlimit}, {$pagesize}");  // 查询记录集
$multipage = multi($amount, $pagesize, $page, 'page.php?get=string', $pagecount);  // 显示分页

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Discuz分页方法演示

    if(!defined('IN_DISCUZ') || !defined('IN_DISCUZ')) {     exit('Access Denied'); ...

    96php.cn
  • 【fastadmin安全篇】设置全局 HtmlPurifier 安全过滤

    首先下载HtmlPurifier 链接:https://github.com/ezyang/htmlpurifier

    96php.cn
  • 【fastadmin】踩坑第一发-前台会员中心权限控制

    刚刚脑子秀逗了 没转过弯 再次更新一下 上面那样修改 会导致设置noNeedRight不起作用 其实只需要修改applicationindexcontrolle...

    96php.cn
  • 13.Django基础之django分页

      我们使用脚本批量创建一些测试数据(将下面的代码保存到bulk_create.py文件中放到Django项目的根目录,直接执行即可。):

    changxin7
  • django 分页

    https://www.jianshu.com/p/77a8ea421e22 https://blog.csdn.net/weixin_42134789/ar...

    以谁为师
  • CRM之分页

      分页功能在网页中是非常常见的一个功能,其作用也就是将数据分割成多个页面来进行显示。

    py3study
  • Django自定义分页

    py3study
  • optimize 回收表空间的一些说明

    线上服务器,有张大表需要用pt-archiver根据时间划分归档大量数据到另一个新表中。原先200G的表,在归档完成后,du -hs 显示依然是200G的大小,...

    二狗不要跑
  • iOS - autoreleasepool and @autoreleasepool

    + 在一个自动引用计数的环境中(并不是垃圾回收机制),一个包含了多个对象的 NSAutoreleasePool 对象能够接收 autorelease 消息并且...

    Mitchell
  • MySQL 案例:innodb_buffer_pool_read_requests 解读

    近期时不时会遇到用户结合 MySQL 指标异常的情况来反馈数据库的问题,可能也有很多公司开始重视 DBA 这个职位了吧(这是好事)。也借机研究一下这些指标的细节...

    王文安@DBA

扫码关注云+社区

领取腾讯云代金券