PHP简单的分页类

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


index.php代码

<?php  
include_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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值