PHP简单漂亮的分页类

来源:互联网 发布:淘宝账户怎么贷款额度 编辑:程序博客网 时间:2024/04/28 09:43

文介绍一款原生的PHP分页类,分页样式有点类似bootstrap。



index.php代码

<?phpinclude_once("config.php");require_once('page.class.php'); //分页类$showrow = 10; //一页显示的行数$curpage = empty($_GET['page']) ? 1 : $_GET['page']; //当前的页,还应该处理非数字的情况$url = "?page={page}"; //分页地址,如果有检索条件 ="?page={page}&q=".$_GET['q']//省略了链接mysql的代码,测试时自行添加$sql = "SELECT * FROM userinfo";$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);?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">    <head>         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />         <title>演示:PHP简单漂亮的分页类</title>        <meta name="keywords" content="php分页类" />        <meta name="description" content="本文介绍一款原生的PHP分页类,分页样式有点类似bootstrap。" />        <link rel="stylesheet" type="text/css" href="http://www.sucaihuo.com/jquery/css/common.css" />        <style type="text/css">            p{margin:0}            #page{                height:40px;                padding:20px 0px;            }            #page a{                display:block;                float:left;                margin-right:10px;                padding:2px 12px;                height:24px;                border:1px #cccccc solid;                background:#fff;                text-decoration:none;                color:#808080;                font-size:12px;                line-height:24px;            }            #page a:hover{                color:#077ee3;                border:1px #077ee3 solid;            }            #page a.cur{                border:none;                background:#077ee3;                color:#fff;            }            #page p{                float:left;                padding:2px 12px;                font-size:12px;                height:24px;                line-height:24px;                color:#bbb;                border:1px #ccc solid;                background:#fcfcfc;                margin-right:8px;            }            #page p.pageRemark{                border-style:none;                background:none;                margin-right:0px;                padding:4px 0px;                color:#666;            }            #page p.pageRemark b{                color:red;            }            #page p.pageEllipsis{                border-style:none;                background:none;                padding:4px 0px;                color:#808080;            }            .dates li {font-size: 14px;margin:20px 0}            .dates li span{float:right}        </style>    </head>    <body>        <div class="head">            <div class="head_inner clearfix">                <ul id="nav">                    <li><a href="http://www.sucaihuo.com">首 页</a></li>                    <li><a href="http://www.sucaihuo.com/templates">网站模板</a></li>                    <li><a href="http://www.sucaihuo.com/js">网页特效</a></li>                    <li><a href="http://www.sucaihuo.com/php">PHP</a></li>                    <li><a href="http://www.sucaihuo.com/site">精选网址</a></li>                </ul>                <a class="logo" href="http://www.sucaihuo.com"><img src="http://www.sucaihuo.com/Public/images/logo.jpg" alt="素材火logo" /></a>            </div>        </div>        <div class="container">            <div class="demo">                <h2 class="title"><a href="http://www.sucaihuo.com/php/223.html">教程:PHP简单漂亮的分页类</a></h2>                <div class="showData">                    <ul class="dates">                        <?php while ($row = mysql_fetch_array($query)) { ?>                            <li>                                <span><?php echo $row['t3'] ?></span>                                <a target="_blank" href="http://www.sucaihuo.com/js"><?php echo $row['t1'] ?></a>                            </li>                        <?php } ?>                    </ul>                    <!--显示数据区-->                </div>                <div class="showPage">                    <?php                    if ($total > $showrow) {//总记录数大于每页显示数,显示分页                        $page = new page($total, $showrow, $curpage, $url, 2);                        echo $page->myde_write();                    }                    ?>                </div>            </div>        </div>        <div class="foot">            Powered by sucaihuo.com  本站皆为作者原创,转载请注明原文链接:<a href="http://www.sucaihuo.com" target="_blank">www.sucaihuo.com</a>        </div>        <script type="text/javascript" src="http://www.sucaihuo.com/Public/js/other/jquery.js"></script>     </body></html>

page.class.php代码

<?php/* * ********************************************* * @类名:   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 < 0)            $this->myde_total = 0;        if ($this->myde_page < 1)            $this->myde_page = 1;        if ($this->myde_page_count < 1)            $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 < 1) {            $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 < 1)            $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 "<a href='" . $this->page_replace(1) . "' title='首页'>首页</a>";        } else {            return "<p>首页</p>";        }    }    //上一页    private function myde_prev() {        if ($this->myde_page != 1) {            return "<a href='" . $this->page_replace($this->myde_page - 1) . "' title='上一页'>上一页</a>";        } else {            return "<p>上一页</p>";        }    }    //下一页    private function myde_next() {        if ($this->myde_page != $this->myde_page_count) {            return "<a href='" . $this->page_replace($this->myde_page + 1) . "' title='下一页'>下一页</a>";        } else {            return"<p>下一页</p>";        }    }    //尾页    private function myde_last() {        if ($this->myde_page != $this->myde_page_count) {            return "<a href='" . $this->page_replace($this->myde_page_count) . "' title='尾页'>尾页</a>";        } else {            return "<p>尾页</p>";        }    }    //输出    public function myde_write($id = 'page') {        $str = "<div id=" . $id . ">";        $str.=$this->myde_home();        $str.=$this->myde_prev();        if ($this->myde_i > 1) {            $str.="<p class='pageEllipsis'>...</p>";        }        for ($i = $this->myde_i; $i <= $this->myde_en; $i++) {            if ($i == $this->myde_page) {                $str.="<a href='" . $this->page_replace($i) . "' title='第" . $i . "页' class='cur'>$i</a>";            } else {                $str.="<a href='" . $this->page_replace($i) . "' title='第" . $i . "页'>$i</a>";            }        }        if ($this->myde_en < $this->myde_page_count) {            $str.="<p class='pageEllipsis'>...</p>";        }        $str.=$this->myde_next();        $str.=$this->myde_last();        $str.="<p class='pageRemark'>共<b>" . $this->myde_page_count .                "</b>页<b>" . $this->myde_total . "</b>条数据</p>";        $str.="</div>";        return $str;    }}?>



config.php代码

<?php$host="localhost";$db_user="root";$db_pass="root";$db_name="job";$timezone="Asia/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");?>



1 0