1. 程式人生 > >PHP分頁類

PHP分頁類

utf-8 conn function boot 素材 other roo span AC

<?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;
    }

}

?>

  配置項

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

  demo

<?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 article";
$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[‘addtime‘] ?></span>
                                <a target="_blank" href="http://www.sucaihuo.com/js"><?php echo $row[‘title‘] ?></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>

  

PHP分頁類