• 技术文章 >PHP >PHP教程

    php分页有3种实现方法

    小妮浅浅小妮浅浅2021-09-16 16:00:27原创732

    1、通过“mysql_query”等函数将sql查询进行分页。

    2、使用ajax的方法实现分页。

    3、通过“function viewpage(p){...}”脚本实现分页。

    实例

    <?php
      class pager {
     
        public $sql; //SQL查询语句
     
        public $datanum; //查询所有的数据总记录数
     
        public $page_size; //每页显示记录的条数
     
        protected $_errstr;
     
        protected $_conn;
     
        protected $_query_id;
     
     
     
        public function query($query)///这个函数有问题,暂时可以不用
     
        {
     
        $ret = false;
     
        if (!empty($query)) {
     
          if ($this->_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;
     
        }
     
     
     
      }
     
    ?>

    以上就是php分页有3种实现方法,希望对大家有所帮助。更多php学习指路:php教程

    本文转载于php中文网,如有侵犯联系作者修改。

    专题推荐:php 分页
    品易云
    上一篇:php写入txt文件后字符乱码的解决办法 下一篇:php实现英文转小写的方法

    相关文章推荐

    • php实现数字转换为大写的方法• PHP中销毁对象的方法• php获得表单提交数据的三种方法• php设置cookie记住密码的方法• PHP函数__autoload失效原因• php实现sftp上传的方法• php替换链接为空的方法• php ajax获取中文乱码的解决办法• php小数精确小数点后位数的方法• php设置常量的方法• php替换html文字的方法• php正则替换换行符的方法• php curl无法post的解决办法• php读取数据库中文乱码的解决办法• php写入txt文件后字符乱码的解决办法

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网