千家信息网

php实现分页功能的方法有几种

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍php实现分页功能的方法有几种,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!php分页有3种实现方法,分别是:1、通过"mysql_query"等函数将sql查
千家信息网最后更新 2026年11月03日php实现分页功能的方法有几种

这篇文章主要介绍php实现分页功能的方法有几种,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

php分页有3种实现方法,分别是:1、通过"mysql_query"等函数将sql查询进行分页;2、使用ajax的方法实现分页;3、通过"function viewpage(p){...}"脚本实现分页。

本文操作环境:windows7系统、PHP7.1版,DELL G3电脑

php分页有几种实现方法?

php实现分页功能的3种方法

直接上代码,希望大家仔细阅读。

方法一:讲sql查询进行分页进行,需要调用几个函数,具体见脚本:
1.pager.class.php

_conn === false || !is_resource($this->_conn)) {       warningLog(__METHOD__ . ': query sql with no connection', true);      return false;      }    $this->_query_id = @mysql_query($query, $this->_conn);    if ($this->_query_id === false) {    $this->_errstr = @mysql_error();    $ret = false;     } else {    $this->_errstr = 'SUCCESS';    $ret = $this->_query_id;      }    }     $msg = ($ret === false) ? 'false' : strval($ret);     debugLog(__METHOD__.": [$msg] returned for sql query [$query]");    return $ret;    }function __construct($sql,$page_size) {      $result = mysql_query($sql);      $datanum = mysql_num_rows($result);      $this->sql=$sql;      $this->datanum=$datanum;      $this->page_size=$page_size;    }    //当前页数    public function page_id() {      if($_SERVER['QUERY_STRING'] == ""){        return 1;      }elseif(substr_count($_SERVER['QUERY_STRING'],"page_id=") == 0){        return 1;      }else{        return intval(substr($_SERVER['QUERY_STRING'],8));      }    }    //剩余url值    public function url() {      if($_SERVER['QUERY_STRING'] == ""){        return "";      }elseif(substr_count($_SERVER['QUERY_STRING'],"page_id=") == 0){        return "&".$_SERVER['QUERY_STRING'];      }else{        return str_replace("page_id=".$this->page_id(),"",$_SERVER['QUERY_STRING']);      }    }    //总页数    public function page_num() {      if($this->datanum == 0){        return 1;      }else{        return ceil($this->datanum/$this->page_size);      }    }//数据库查询的偏移量    public function start() {      return ($this->page_id()-1)*$this->page_size;    }    //数据输出    public function sqlquery() {      return $this->sql." limit ".$this->start().",".$this->page_size;    }    //获取当前文件名    private function php_self() {      return $_SERVER['PHP_SELF'];    }    //上一页    private function pre_page() {      if ($this->page_id() == 1) { //页数等于1        return "url().">上一页 ";      }elseif ($this->page_id() != 1) { //页数不等于1        return "上一页 ";      }    }    //显示分页    private function display_page() {      $display_page = "";      if($this->page_num() <= 10){ //小于10页        for ($i=1;$i<=$this->page_num();$i++) //循环显示出页面          $display_page .= "".$i." ";          return $display_page;      }elseif($this->page_num() > 10){ //大于10页        if($this->page_id() <= 6){          for ($i=1;$i<=10;$i++) //循环显示出页面            $display_page .= "".$i." ";            return $display_page;        }elseif(($this->page_id() > 6) && ($this->page_num()-$this->page_id() >= 4)){          for ($i=$this->page_id()-5;$i<=$this->page_id()+4;$i++) //循环显示出页面            $display_page .= "".$i." "; return $display_page;        }elseif(($this->page_id() > 6) && ($this->page_num()-$this->page_id() < 4)){          for ($i=$this->page_num()-9;$i<=$this->page_num();$i++) //循环显示出页面            $display_page .= "".$i." ";            return $display_page;        }      }    }    //下一页    private function next_page() {      if ($this->page_id() < $this->page_num()) { //页数小于总页数        return "下一页 ";      }elseif ($this->page_id() == $this->page_num()) { //页数等于总页数        return "下一页 ";      }    }    // 设置分页信息    public function set_page_info() {      $page_info = "共".$this->datanum."条 ";      $page_info .= "url().">首页 ";      $page_info .= $this->pre_page();      $page_info .= $this->display_page();      $page_info .= $this->next_page();      $page_info .= "尾页 ";      $page_info .= "第".$this->page_id()."/".$this->page_num()."页";      return $page_info;    }  }?>

2.脚本2:

sqlquery());while($info = mysql_fetch_array($result,MYSQL_ASSOC)){  // while($info = mysql_fetch_array($res_1, MYSQL_ASSOC)){  echo $info["word"]."
"; } // 页码索引条 echo $page->set_page_info();?>

方法二:使用ajax的方法
1、首先了解SQL语句中的limit用法

SELECT * FROM table …… limit 开始位置 , 操作条数 (其中开始位置是从0开始的)

例子
取前20条记录:SELECT * FROM table …… limit 0 , 20
从第11条开始取20条记录:SELECT * FROM table …… limit 10 , 20
LIMIT n 等价于 LIMIT 0,n。
如select * from table LIMIT 5; //返回前5行,和 select * from table LIMIT 0,5一样
2、分页原理

所谓分页显示,也就是讲数据库中的结果集,一段一段显示出来
怎么分段,当前在第几段 (每页有几条,当前再第几页)
前10条记录:select * from table limit 0,10
第11至20条记录:select * from table limit 10,10
第21至30条记录:select * from table limit 20,10
分页公式:
(当前页数 - 1 )X 每页条数 , 每页条数

Select * from table limit ($Page- 1) * $PageSize, $PageSize

3、$_SERVER["REQUEST_URI"]函数
预定义服务器变量的一种,所有$_SERVER开头的都叫做预定于服务器变量。
REQUEST_URI的作用是取得当前URI,也就除域名外后面的完整的地址路径。
例子:
当前页为:http://www.test.com/home.php?id=23&cid=22
echo $_SERVER["REQUEST_URI"]
结果为:/home.php?id=23&cid=22
4、parse_url()解析URL函数
parse_url() 是讲URL解析成有固定键值的数组的函数
例子

$ua=parse_url("http://username:password@hostname/path?arg=value#anchor");print_r($ua);

结果:

Array( [scheme] => http  ;协议 [host] => hostname  ;主机域名 [user] => username  ;用户 [pass] => password  ;密码 [path] => /path   ;路径 [query] => arg=value  ;取参数 [fragment] => anchor  ;)

5、代码实例
这个一个留言的分页,分为3个部分,一个是数据库设计,一个是连接页面,一个是显示页面。
(1)设计数据库
设计数据库名为bbs,有一个数据表为message,里面包含title,lastdate,user,content等字段,分别表示留言标题,留言日前,留言人,留言的内容
(2)连接页面

", str_replace(" ", " ", $content)); //两个str_replace嵌套 return $content;}//$content=str_replace("'","'",$content); //htmlspecialchars(); ?>

(3)显示页面

 $pagesize){ if($pageval<=1)$pageval=1; echo "共 $num 条". " 上一页 下一页";}$SQL="SELECT * FROM `message` limit $page $pagesize "; $query=mysql_query($SQL);  while($row=mysql_fetch_array($query)){?>
标题: 时间:
用户:
内容:

方法3:

脚本2:

header("Content-Type:text/html;charset=GB2312"); $pagesize=10; //echo $_POST['page']; $result = mysql_query("Select count(DISTINCT hotelname) FROM ".TBL_HOTELS); $myrow = mysql_fetch_array($result); $numrows=$myrow[0]; $pages=intval($numrows/$pagesize); if ($numrows%$pagesize) $pages++; if (isset($_POST['page'])){ $page=intval($_POST['page']); } else{ //设置为第一页 $page=1; } $first=1; $prev=$page-1; $next=$page+1; $last=$pages; //计算记录偏移量 $offset=$pagesize*($page - 1); //读取指定记录数 $result=mysql_query("select `hotelname` , count( * ) from ".TBL_HOTELS." GROUP BY `hotelname` order by id desc limit $offset,$pagesize"); $num = mysql_num_rows($result); while ($row = mysql_fetch_array($result,MYSQL_NUM)) { $hotelname[] = $row[0]; $countpeople[] = $row[1]; } for($a=0;$a<$num;$a++) { //$result=mysql_query("select count(title) from " . TBL_Comments ." where `title`=\"".$title[$a]."\""); //$row = mysql_fetch_row($result); echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo " \n"; echo "\n"; echo "
\n"; //rating_bar($title[$a],5); echo "$hotelname[$a]\n"; echo "
\n"; echo " 推荐人数:($countpeople[$a]) |\n"; echo "平均分: (".$count."票) | 评论数:()\n"; echo "
\n"; } echo ""; echo "
"; echo "

"; echo "

第".$page."页/总".$pages."页 | 总".$numrows."条 | "; if ($page>1) echo "首页 | "; if ($page>1) echo "上页 | "; if ($page<$pages) echo "下页 | "; if ($page<$pages) echo "尾页"; echo "转到第 页 "; echo "

";

以上是"php实现分页功能的方法有几种"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

方法 页数 数据 页面 数据库 函数 内容 脚本 上一 循环 功能 例子 结果 查询 设计 代码 位置 变量 域名 服务器 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 精品咖啡豆 互联网科技公司起名 互联网科技金融 未来的互联网科技 互联网科技英文翻译 互联网科技创新企业排名 互联网之后的科技是什么 昭通云南众福互联网科技有限公司 银川新华互联网科技职业技术培训学校图片 厦门比较好的科技互联网公司 宝灵互联网科技有限公司 语蝶互联网科技有限公司 健康食品互联网创新科技园项目 保险科技服务互联网营销体系 广东工业互联网大赛深圳学泰科技 互联网科技股为什么大涨 科技互联网专业工作会议发言稿 互联网科技创业有什么好项目 六子台科技互联网展会 知域互联网科技有限公司官网 湖南永感互联网科技有限公司 新华互联网科技学院 礼当家互联网科技 互联网科技公司实习生 黑科技 体验场景 互联网大会 互联网第三次科技革命特征 信承诺互联网科技有限公司 互联网科技企业商标注意事项 长沙渺峰互联网科技有限公司 互联网科技大会大佬
0