首页 > 后端开发 > php教程 > PHP通用分页组件

PHP通用分页组件

WBOY
发布: 2016-07-29 08:57:28
原创
1047 人浏览过
/* * *********************************************
 * @类名:   page
 * @参数:   $myde_total - 总记录数
 *          $myde_size - 一页显示的记录数
 *          $myde_page - 当前页
 *          $myde_url - 获取当前的url
 * @功能:   分页实现
 */
class page {
    private $myde_total;          //总记录数
    private $myde_size;           //一页显示的记录数
    private $myde_page;           //当前页
    private $myde_page_count;     //总页数
    private $myde_i;              //起头页数
    private $myde_en;             //结尾页数
    private $myde_url;            //获取当前的url
    /*
     * $show_pages
     * 页面显示的格式,显示链接的页数为2*$show_pages+1。
     * 如$show_pages=2那么页面上显示就是[首页] [上页] 1 2 3 4 5 [下页] [尾页]
     */
    private $show_pages;
    public function __construct($myde_total = 1, $myde_size = 1, $myde_page = 1, $myde_url, $show_pages = 2) {
        $this->myde_total = $this->numeric($myde_total);
        $this->myde_size = $this->numeric($myde_size);
        $this->myde_page = $this->numeric($myde_page);
        $this->myde_page_count = ceil($this->myde_total / $this->myde_size);
        $this->myde_url = $myde_url;
        if ($this->myde_total             $this->myde_total = 0;
        if ($this->myde_page             $this->myde_page = 1;
        if ($this->myde_page_count             $this->myde_page_count = 1;
        if ($this->myde_page > $this->myde_page_count)
            $this->myde_page = $this->myde_page_count;
        $this->limit = ($this->myde_page - 1) * $this->myde_size;
        $this->myde_i = $this->myde_page - $show_pages;
        $this->myde_en = $this->myde_page + $show_pages;
        if ($this->myde_i             $this->myde_en = $this->myde_en + (1 - $this->myde_i);
            $this->myde_i = 1;
        }
        if ($this->myde_en > $this->myde_page_count) {
            $this->myde_i = $this->myde_i - ($this->myde_en - $this->myde_page_count);
            $this->myde_en = $this->myde_page_count;
        }
        if ($this->myde_i             $this->myde_i = 1;
    }
    //检测是否为数字
    private function numeric($num) {
        if (strlen($num)) {
            if (!preg_match("/^[0-9]+$/", $num)) {
                $num = 1;
            } else {
                $num = substr($num, 0, 11);
            }
        } else {
            $num = 1;
        }
        return $num;
    }
    //地址替换
    private function page_replace($page) {
        return str_replace("{page}", $page, $this->myde_url);
    }
    //首页
    private function myde_home() {
        if ($this->myde_page != 1) {
            return "首页";
        } else {
            return "

首页

";
        }
    }
    //上一页
    private function myde_prev() {
        if ($this->myde_page != 1) {
            return "上一页";
        } else {
            return "

上一页

";
        }
    }
    //下一页
    private function myde_next() {
        if ($this->myde_page != $this->myde_page_count) {
            return "下一页";
        } else {
            return"

下一页

";
        }
    }
    //尾页
    private function myde_last() {
        if ($this->myde_page != $this->myde_page_count) {
            return "尾页";
        } else {
            return "

尾页

";
        }
    }
    //输出
    public function myde_write($id = 'page') {
        $str = "
";
        $str.=$this->myde_home();
        $str.=$this->myde_prev();
        if ($this->myde_i > 1) {
            $str.="

...

";
        }
        for ($i = $this->myde_i; $i myde_en; $i++) {
            if ($i == $this->myde_page) {
                $str.="$i";
            } else {
                $str.="$i";
            }
        }
        if ($this->myde_en myde_page_count) {
            $str.="

...

";
        }
        $str.=$this->myde_next();
        $str.=$this->myde_last();
        $str.="

" . $this->myde_page_count .
                "
" . $this->myde_total . "条数据

";
        $str.="
";
        return $str;
    }
}

?>

include_once("config.php");
require_once('page.class.php'); //分页类
$showrow = 3; //一页显示的行数
$curpage = empty($_GET['page']) ? 1 : $_GET['page']; //当前的页,还应该处理非数字的情况
$url = "?page={page}"; //分页地址,如果有检索条件 ="?page={page}&q=".$_GET['q']
//省略了链接mysql的代码,测试时自行添加
$sql = "SELECT id,content,lastdate FROM message";
$total = mysql_num_rows(mysql_query($sql)); //记录总条数
if (!empty($_GET['page']) && $total != 0 && $curpage > ceil($total / $showrow))
    $curpage = ceil($total_rows / $showrow); //当前页数大于最后页数,取最后一页
//获取数据
$sql .= " LIMIT " . ($curpage - 1) * $showrow . ",$showrow;";
$query = mysql_query($sql);
?>


   
       
        演示:PHP简单漂亮的分页类
       
       
       
       
   
   
       


           

               
               
           

       

       

           

               

教程:PHP简单漂亮的分页类


               

                   

                           
                               

  •                                
                                   
                               

  •                        
                       

                   
               

               

                                        if ($total > $showrow) {//总记录数大于每页显示数,显示分页
                        $page = new page($total, $showrow, $curpage, $url, 2);
                        echo $page->myde_write();
                    }
                    ?>
               

           

       

       

            Powered by sucaihuo.com  本站皆为作者原创,转载请注明原文链接:www.sucaihuo.com
       

       
   

$host="localhost";
$db_user="root";
$db_pass="";
$db_name="test";
$timez/Shanghai";
$link=mysql_connect($host,$db_user,$db_pass);
mysql_select_db($db_name,$link);
mysql_query("SET names UTF8");
header("Content-Type: text/html; charset=utf-8");
?>

以上就介绍了PHP通用分页组件,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板