超简单的分页功能

在用Thinkphp5时,发现TP5自带的分页样式满足不了自己的需求,所以自己写了个分页功能:

这下面代码是TP5测试时直接写在控制器层的代码,注释写的很清楚...

public function index($page=1)    //$page=1为传过来的页码参数,默认为第一页
    {	
    	$data = db('messagn')->select();	//查询数据
    	$each = 2;	//每页显示多少条
    	$sum = count($data);	//总条数
	$pagetotal = ceil($sum/$each);	//总页数,尾页

	//限制手动在URL上输入不存在的页面
	if($page>$pagetotal || $page<1){
	    $this->error('没有此页面');
	}

	//当前页的数据,从第($page-1)*$each条数据起取$each条数据
	$list = db('messagn')->limit(($page-1)*$each,$each)->select();	

    	$this->assign(array(
    		'list' => $list,
    		'pagetotal' => $pagetotal,
    		'page' => $page,
    	));
        return view();
    }

由于很多页面可能会用到分页功能,为了方便调用,写成一个page方法:

public function page($page,$each,$dbtable)    //$page当前页 $each每页显示多少条 $dbtale数据表名
	{		
		$data = db($dbtable)->select();	//查询数据
		$sum = count($data);	//总条数
		$pagetotal = ceil($sum/$each);	//总页数,尾页


		//限制手动在URL上输入不存在的页面
		if($page>$pagetotal || $page<1){
			return -1;
			//$this->error('没有此页面');
		}


		//当前页的数据,从第($page-1)*$each条数据起取$each条数据
		$list = db($dbtable)->limit(($page-1)*$each,$each)->select();	
		$res['list'] = $list;
		$res['pagetotal'] = $pagetotal;
		$res['page'] = $page;
		return $res;
	}

有了$list(显示当前页数据),$pagetotal(总页数或者末页),$page(当前页)这三个,然后分页想怎么摆就怎么摆了。

以下是html页面的代码,可能看起来比较乱(里面是TP5的输出标签),这下面无关紧要,根据自己需求编写:

            <div class="pagelist">
            <a href="{:url('Messagn/index')}?page=1">首页</a>
            
            {if condition="$page-2 gt 0"}<!--显示前两页及上一页-->
            <a href="{:url('Messagn/index')}?page={$page-1}">上一页</a>
              {if condition="$page-4 gt 0"}<!--当前页为最后页,为了美观前面多显示两页-->
              <a href="{:url('Messagn/index')}?page={$page-4}">{$page-4}</a>
              <a href="{:url('Messagn/index')}?page={$page-3}">{$page-3}</a>
              {elseif condition="$page-3 gt 0"}<!--当前页为倒数第二页,为了美观前面多显示一页-->
              <a href="{:url('Messagn/index')}?page={$page-3}">{$page-3}</a>
              {/if}
            <a href="{:url('Messagn/index')}?page={$page-2}">{$page-2}</a>
            <a href="{:url('Messagn/index')}?page={$page-1}">{$page-1}</a>
            {elseif condition="$page-1 gt 0"}<!--显示前一页及上一页-->
            <a href="{:url('Messagn/index')}?page={$page-1}">上一页</a>
            <a href="{:url('Messagn/index')}?page={$page-1}">{$page-1}</a>
            {else}
            <span class="">上一页</span>
            {/if}


            <span class="current">{$page}</span>


            {if condition="$page+2 elt $pagetotal"}<!--显示后两页及下一页-->
            <a href="{:url('Messagn/index')}?page={$page+1}">{$page+1}</a>
            <a href="{:url('Messagn/index')}?page={$page+2}">{$page+2}</a>
              {if condition="$page eq 1 && $pagetotal egt $page+4"}<!--当前页为第一页,为了美观后面多显示两页-->
              <a href="{:url('Messagn/index')}?page={$page+3}">{$page+3}</a>
              <a href="{:url('Messagn/index')}?page={$page+4}">{$page+4}</a>
              {elseif condition="$page eq 1 && $pagetotal egt $page+3"}
              <a href="{:url('Messagn/index')}?page={$page+3}">{$page+3}</a>
              {elseif condition="$page eq 2 && $pagetotal egt $page+3"}<!--当前页为第二页,为了美观后面多显示一页-->
              <a href="{:url('Messagn/index')}?page={$page+3}">{$page+3}</a>
              {/if}
            <a href="{:url('Messagn/index')}?page={$page+1}">下一页</a>
            {elseif condition="$page+1 elt $pagetotal"}<!--显示后一页及下一页-->
            <a href="{:url('Messagn/index')}?page={$page+1}">{$page+1}</a>
            <a href="{:url('Messagn/index')}?page={$page+1}">下一页</a>
            {else}
            <span class="">下一页</span>
            {/if}


            <a href="{:url('Messagn/index')}?page={$pagetotal}">尾页</a>
            <span class=""><b style="color: red;">{$page}</b>/{$pagetotal}</span>
            <span><input id="go" style="border: 0; width: 25px;"></span>
            <a href="javascript:void(0)" οnclick="return go()">GO</a>
          </div>


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
分页功能是通过将数据按照一定的规则进行分组,然后在页面上展示出来的一种常见的网页展示方式。在 PHP 中,我们可以使用 MySQL 数据库来实现分页功能。 以下是一个简单PHP 分页代码示例: ```php <?php // 连接数据库 $conn = mysqli_connect('localhost', 'username', 'password', 'database'); // 获取总记录数 $sql = "SELECT COUNT(*) FROM table_name"; $result = mysqli_query($conn, $sql); $row = mysqli_fetch_array($result); $total_records = $row[0]; // 每页显示数量 $per_page = 10; // 计算总页数 $total_pages = ceil($total_records / $per_page); // 获取当前页数 if (isset($_GET['page'])) { $current_page = $_GET['page']; } else { $current_page = 1; } // 计算起始位置 $start = ($current_page - 1) * $per_page; // 获取当前页数据 $sql = "SELECT * FROM table_name LIMIT $start, $per_page"; $result = mysqli_query($conn, $sql); // 输出数据 while ($row = mysqli_fetch_array($result)) { echo $row['column_name'] . '<br>'; } // 输出分页链接 for ($i = 1; $i <= $total_pages; $i++) { echo '<a href="?page=' . $i . '">' . $i . '</a> '; } ?> ``` 这段代码中,我们首先连接数据库,并查询出总记录数。然后,我们设置每页显示的数量和当前页数,并根据这些信息计算出总页数和起始位置。接着,我们使用 `LIMIT` 关键字从数据库中获取当前页的数据,并输出到页面上。最后,我们输出分页链接,使用户可以点击链接切换不同的页数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值