PHP分页函数
2017-06-18 23:29
309 查看
我们经常会从数据库里读取的数据显示出来,当数据行较多时就需要把数据分页显示。
这里写了一个通用的分页函数:
使用例子:
测试截图:
这里写了一个通用的分页函数:
paging.func.php
<?php /** * 数据分页函数 * @param integer $count 数据总行数 * @param integer $showCount 显示行数 * @param integer $index 当前页号 * @param integer $navCount 导航最大项数 * @return array( * 'curIndex' => 当前页号, * 'pageCount' => 总页数, * 'beginIndex' => 当前页开始行, * 'endIndex' => 当前页结束行, * 'count' => 数据行数, * 'nav' => array( * 'curIndex' => 当前页号, * 'beginIndex' => 分页导航开始页, * 'endIndex' => 分页导航结束页, * 'prevIndex' => 上一页, * 'nextIndex' => 下一页, * 'firstIndex' => 首页, * 'lastIndex' => 尾页, * ) * ) */ function Paging($count, $showCount, $index, $navCount){ $pageCount = (integer)($count / $showCount); if($count % $showCount){ $pageCount += 1; } $beginIndex = $index * $showCount; $endIndex = $beginIndex + $showCount; if($endIndex > $count){ $endIndex = $count; } $ret = array( 'pageCount' => $pageCount, 'curIndex' => $index, 'beginIndex' => $beginIndex, 'endIndex' => $endIndex, 'count' => $count, ); $beginIndex = $index - (integer)($navCount / 2); if($beginIndex < 0){ $beginIndex = 0; } $endIndex = $beginIndex + $navCount; if($endIndex > $pageCount){ $endIndex = $pageCount; $beginIndex = max(0, $endIndex - $navCount); } $ret['nav'] = array( 'beginIndex' => $beginIndex, 'endIndex' => $endIndex, 'curIndex' => $index, 'prevIndex' => max(0, $index - 1), 'nextIndex' => min($pageCount, $index + 1), 'firstIndex' => 0, 'lastIndex' => $pageCount - 1, ); return $ret; } ?>
使用例子:
test-paging.php
<?php require 'paging.func.php'; /** * 随机生成字符串 * @param string $length 字符串长度 */ function RandomString($length){ static $range = '0123456789qwertyuiopasdfghjklzxcvbnm'; $rangeLen = strlen($range); $string = ''; for($i = 0 ; $i < $length; ++ $i){ $string .= $range[mt_rand(0, $rangeLen - 1)]; } return $string; } /** * 查询数据 * @param integer $count 数据表行数 */ function QueryData($count){ for($i = 0; $i < $count; ++ $i){ $data[$i] = array( 'id' => ($i + 1000), 'name' => RandomString(mt_rand(4, 10)), ); } return $data; } /** * 显示数据表 * @param array $data 数据表 * @param integer $showCount 每页行数 * @param integer $count 总行数 * @param integer $index 当前页号 * @param integer $navCount 导航显示页数 */ function showData($data, $showCount, $count, $index, $navCount){ $pag = Paging($count, $showCount, $index, $navCount); echo "<table>"; echo "<tr><th>id</th><th>name</td><tr>"; for($i = $pag['beginIndex']; $i < $pag['endIndex']; ++ $i){ $row = &$data[$i]; echo "<tr>"; echo "<td>{$row['id']}</td>"; echo "<td>{$row['name']}</td>"; echo "</tr>"; } echo "</table>"; echo "</div>"; $nav = &$pag['nav']; if(0 < $pag['curIndex']){ echo " <a href='?index={$nav['firstIndex']}'>首页</a>"; echo " <a href='?index={$nav['prevIndex']}'>上一页</a>"; } for($i = $nav['beginIndex']; $i < $nav['endIndex']; ++ $i){ $showNum = $i + 1; if($i == $index){ echo " <span>{$showNum}</span>"; }else{ echo " <a href='?index={$i}'><b>{$showNum}</b></a>"; } } if($pag['curIndex'] + 1 < $pag['pageCount']){ echo " <a href='?index={$nav['nextIndex']}'>下一页</a>"; echo " <a href='?index={$nav['lastIndex']}'>尾页</a>"; } echo " 总{$pag['pageCount']}页 {$pag['count']}条"; echo "</div>"; } $data = QueryData(75); $index = isset($_REQUEST['index']) ? $_REQUEST['index'] : 0; showData($data, 10, 75, $index, 5); ?>
测试截图:
相关文章推荐
- PHP长文章分页函数
- 超级简洁的php分页函数
- 很有用的PHP分页函数 pageft
- PHP页面分页函数
- php分页函数
- 我的PHP分页函数
- PHP长文章分页函数,带使用方法,不会分割段落,翻页在底部
- PHP的分页函数-----
- php 遍历显示文件夹下所有目录、所有文件的函数,没有分页的代码
- PHP 长文章分页函数 带使用方法,不会分割段落,翻页在底部
- 简单实用的分页函数(Php+mysql)
- 网上的一个PHP分页函数,测试可用
- 网上的一个PHP分页函数,测试可用
- PHP分页函数(两个函数配合使用)
- 一个php分页函数,自己稍改了改
- php分页函数(转)
- 网上的一个PHP分页函数,测试可用
- PHP分页函数
- PHP分页函数
- PHP长文章分页函数,带使用方法,不会分割段落,翻页在底部