您现在的位置: 365建站网 > 365文章 > php实现的漂亮分页方法_php实例

php实现的漂亮分页方法_php实例

文章来源:365jz.com     点击数:340    更新时间:2017-08-06 13:42   参与评论

分页页码显示算法

 

</>code

  1. /**
  2.   * 获取分页的HTML内容
  3.   * @param integer $page 当前页
  4.   * @param integer $pages 总页数
  5.   * @param string $url 跳转url地址    最后的页数以 '&page=x' 追加在url后面
  6.   *
  7.   * @return string HTML内容;
  8.   */
  9.  public static function getPageHtml($page, $pages, $url){
  10.   //最多显示多少个页码
  11.   $_pageNum = 5;
  12.   //当前页面小于1 则为1
  13.   $page = $page<1?1:$page;
  14.   //当前页大于总页数 则为总页数
  15.   $page = $page > $pages ? $pages : $page;
  16.   //页数小当前页 则为当前页
  17.   $pages = $pages < $page ? $page : $pages;
  18.   //计算开始页
  19.   $_start = $page - floor($_pageNum/2);
  20.   $_start = $_start<1 ? 1 : $_start;
  21.   //计算结束页
  22.   $_end = $page + floor($_pageNum/2);
  23.   $_end = $_end>$pages? $pages : $_end;
  24.   //当前显示的页码个数不够最大页码数,在进行左右调整
  25.   $_curPageNum = $_end-$_start+1;
  26.   //左调整
  27.   if($_curPageNum<$_pageNum && $_start>1){ 
  28.    $_start = $_start - ($_pageNum-$_curPageNum);
  29.    $_start = $_start<1 ? 1 : $_start;
  30.    $_curPageNum = $_end-$_start+1;
  31.   }
  32.   //右边调整
  33.   if($_curPageNum<$_pageNum && $_end<$pages){
  34.    $_end = $_end + ($_pageNum-$_curPageNum);
  35.    $_end = $_end>$pages? $pages : $_end;
  36.   }
  37.   $_pageHtml = '<ul class="pagination">';
  38.   /*if($_start == 1){
  39.    $_pageHtml .= '<li><a title="第一页">«</a></li>';
  40.   }else{
  41.    $_pageHtml .= '<li><a  title="第一页" href="'.$url.'&page=1">«</a></li>';
  42.   }*/
  43.   if($page>1){
  44.    $_pageHtml .= '<li><a  title="上一页" href="'.$url.'&page='.($page-1).'">«</a></li>';
  45.   }
  46.   for ($i = $_start; $i <= $_end; $i++) {
  47.    if($i == $page){
  48.     $_pageHtml .= '<li class="active"><a>'.$i.'</a></li>';
  49.    }else{
  50.     $_pageHtml .= '<li><a href="'.$url.'&page='.$i.'">'.$i.'</a></li>';
  51.    }
  52.   }
  53.   /*if($_end == $pages){
  54.    $_pageHtml .= '<li><a title="最后一页">»</a></li>';
  55.   }else{
  56.    $_pageHtml .= '<li><a  title="最后一页" href="'.$url.'&page='.$pages.'">»</a></li>';
  57.   }*/
  58.   if($page<$_end){
  59.    $_pageHtml .= '<li><a  title="下一页" href="'.$url.'&page='.($page+1).'">»</a></li>';
  60.   }
  61.   $_pageHtml .= '</ul>';
  62.   echo $_pageHtml;
  63.  }

 




其它:
 

<?php
// 数据库连接常量
define('DB_HOST', 'localhost');
define('DB_USER', 'root');
define('DB_PWD', '');
define('DB_NAME', 'guest');
 
// 连接数据库
function conn()
{
    $conn = mysqli_connect(DB_HOST, DB_USER, DB_PWD, DB_NAME);
    mysqli_query($conn, "set names utf8");
    return $conn;
}
 
//获得结果集
function doresult($sql){
   $result=mysqli_query(conn(), $sql);
   return  $result;
}
 
//结果集转为对象集合
function dolists($result){
    return mysqli_fetch_array($result, MYSQL_ASSOC);
}
 
function totalnums($sql) {
    $result=mysqli_query(conn(), $sql);
    return $result->num_rows;
}
 
 
 
 
// 关闭数据库
function closedb()
{
    if (! mysqli_close()) {
        exit('关闭异常');
    }
}
 
?>
分页实现代码:
<?php
include 'mysqli.func.php';
 
// 总记录数
$sql = "SELECT dg_id  FROM  tb_user ";
$totalnums = totalnums($sql);
 
// 每页显示条数
$fnum = 8;
 
// 翻页数
$pagenum = ceil($totalnums / $fnum);
 
// 页数常量
@$tmp = $_GET['page'];
 
//防止恶意翻页
if ($tmp > $pagenum)
    echo "<script>window.location.href='index.php'</script>";
 
//计算分页起始值
if ($tmp == "") {
    $num = 0;
} else {
    $num = ($tmp - 1) * $fnum;
}
 
// 查询语句
$sql = "SELECT dg_id,dg_username  FROM  tb_user ORDER BY dg_id DESC LIMIT " . $num . ",$fnum";
$result = doresult($sql);
 
// 遍历输出
while (! ! $rows = dolists($result)) {
    echo $rows['dg_id'] . " " . $rows['dg_username'] . "<br>";
}
 
// 翻页链接
for ($i = 0; $i < $pagenum; $i ++) {
    echo "<a href=index.php?page=" . ($i + 1) . ">" . ($i + 1) . "</a>";
}
?>
单实现了翻页功能,数据库请自行配置结构
 

如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛

您可能感兴趣的文章:

发表评论 (340人查看0条评论)
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
昵称:
最新评论
------分隔线----------------------------

快速入口

· 365软件
· 杰创官网
· 建站工具
· 网站大全

其它栏目

· 建站教程
· 365学习

业务咨询

· 技术支持
· 服务时间:9:00-18:00
365建站网二维码

Powered by 365建站网 RSS地图 HTML地图

copyright © 2013-2024 版权所有 鄂ICP备17013400号