php 分頁類 代碼問題

來源:互聯網
上載者:User
以下在網上找的例子,實際上無法使用。請幫忙指出問題所在?我納悶這個類不需要操作資料庫,查詢哪個表嗎?

    class Page {        private $total;     //總記錄        private $pagesize;  //每頁顯示多少條        private $limit;     //limit        private $page;      //當前頁碼        private $pagenum;       //總頁碼        private $url;       //地址        private $bothnum;       //兩邊保持數字分頁的量    //構造方法初始化    public function __construct($_total, $_pagesize) {        $this->total = $_total ? $_total : 1;        $this->pagesize = $_pagesize;        $this->pagenum = ceil($this->total / $this->pagesize);        $this->page = $this->setPage();        $this->limit = "LIMIT ".($this->page-1)*$this->pagesize.",$this->pagesize";        $this->url = $this->setUrl();        $this->bothnum = 2;    }    //攔截器    private function __get($_key) {        return $this->$_key;    }    //擷取當前頁碼    private function setPage() {        if (!empty($_GET['page'])) {            if ($_GET['page'] > 0) {                if ($_GET['page'] > $this->pagenum) {                    return $this->pagenum;                } else {                    return $_GET['page'];                }            } else {                return 1;            }        } else {            return 1;        }    }    //擷取地址    private function setUrl() {        $_url = $_SERVER["REQUEST_URI"];        $_par = parse_url($_url);        if (isset($_par['query'])) {            parse_str($_par['query'],$_query);            unset($_query['page']);            $_url = $_par['path'].'?'.http_build_query($_query);        }        return $_url;    }   //數字目錄    private function pageList() {        for ($i=$this->bothnum;$i>=1;$i--) {        $_page = $this->page-$i;        if ($_page < 1) continue;            $_pagelist .= ' url.'&page='.$_page.'">'.$_page.' ';        }        $_pagelist .= ' '.$this->page.' ';        for ($i=1;$i<=$this->bothnum;$i++) {            $_page = $this->page+$i;            if ($_page > $this->pagenum) break;            $_pagelist .= ' url.'&page='.$_page.'">'.$_page.' ';        }        return $_pagelist;    }    //首頁  http://ini.iteye.com/    private function first() {        if ($this->page > $this->bothnum+1) {            return ' url.'">1 ...';        }    }    //上一頁    private function prev() {        if ($this->page == 1) {            return '上一頁';        }        return ' url.'&page='.($this->page-1).'">上一頁 ';    }    //下一頁    private function next() {        if ($this->page == $this->pagenum) {            return '下一頁';        }        return ' url.'&page='.($this->page+1).'">下一頁 ';    }    //尾頁    private function last() {        if ($this->pagenum - $this->page > $this->bothnum) {            return ' ...url.'&page='.$this->pagenum.'">'.$this->pagenum.' ';        }    }    //分頁資訊    public function showpage() {        $_page .= $this->first();        $_page .= $this->pageList();        $_page .= $this->last();        $_page .= $this->prev();        $_page .= $this->next();        return $_page;    }}?>

調用方式

回複內容:

以下在網上找的例子,實際上無法使用。請幫忙指出問題所在?我納悶這個類不需要操作資料庫,查詢哪個表嗎?

    class Page {        private $total;     //總記錄        private $pagesize;  //每頁顯示多少條        private $limit;     //limit        private $page;      //當前頁碼        private $pagenum;       //總頁碼        private $url;       //地址        private $bothnum;       //兩邊保持數字分頁的量    //構造方法初始化    public function __construct($_total, $_pagesize) {        $this->total = $_total ? $_total : 1;        $this->pagesize = $_pagesize;        $this->pagenum = ceil($this->total / $this->pagesize);        $this->page = $this->setPage();        $this->limit = "LIMIT ".($this->page-1)*$this->pagesize.",$this->pagesize";        $this->url = $this->setUrl();        $this->bothnum = 2;    }    //攔截器    private function __get($_key) {        return $this->$_key;    }    //擷取當前頁碼    private function setPage() {        if (!empty($_GET['page'])) {            if ($_GET['page'] > 0) {                if ($_GET['page'] > $this->pagenum) {                    return $this->pagenum;                } else {                    return $_GET['page'];                }            } else {                return 1;            }        } else {            return 1;        }    }    //擷取地址    private function setUrl() {        $_url = $_SERVER["REQUEST_URI"];        $_par = parse_url($_url);        if (isset($_par['query'])) {            parse_str($_par['query'],$_query);            unset($_query['page']);            $_url = $_par['path'].'?'.http_build_query($_query);        }        return $_url;    }   //數字目錄    private function pageList() {        for ($i=$this->bothnum;$i>=1;$i--) {        $_page = $this->page-$i;        if ($_page < 1) continue;            $_pagelist .= ' url.'&page='.$_page.'">'.$_page.' ';        }        $_pagelist .= ' '.$this->page.' ';        for ($i=1;$i<=$this->bothnum;$i++) {            $_page = $this->page+$i;            if ($_page > $this->pagenum) break;            $_pagelist .= ' url.'&page='.$_page.'">'.$_page.' ';        }        return $_pagelist;    }    //首頁  http://ini.iteye.com/    private function first() {        if ($this->page > $this->bothnum+1) {            return ' url.'">1 ...';        }    }    //上一頁    private function prev() {        if ($this->page == 1) {            return '上一頁';        }        return ' url.'&page='.($this->page-1).'">上一頁 ';    }    //下一頁    private function next() {        if ($this->page == $this->pagenum) {            return '下一頁';        }        return ' url.'&page='.($this->page+1).'">下一頁 ';    }    //尾頁    private function last() {        if ($this->pagenum - $this->page > $this->bothnum) {            return ' ...url.'&page='.$this->pagenum.'">'.$this->pagenum.' ';        }    }    //分頁資訊    public function showpage() {        $_page .= $this->first();        $_page .= $this->pageList();        $_page .= $this->last();        $_page .= $this->prev();        $_page .= $this->next();        return $_page;    }}?>

調用方式

為什麼需要操作資料庫,樓主要明白分頁的邏輯。分頁可以分為兩部分,第一部分是資料,第二部分是頁碼條。我們在編寫程式的時候其實只需要用戶端給我們傳一個參數即可,那就是當前頁碼。
上面的代碼其實幫你實現了第二部分,你先通過自己查資料庫得到總的條數和自訂一個每頁顯示數就可以利用此類得到頁碼條。然後通過用戶端傳來的當前查詢頁碼寫sql得到資料,也即是第一部分。

有可能是通過setUrl()這個返迴路徑在別的地方進行了封裝吧,題主可以看看這篇:PHP實現分頁:文本分頁和數字分頁

裡面不是寫得很明白嗎
構造傳參
然後調用showpage

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.