今天為大家獻上一段代碼,這是一段php分頁代碼:
<?php
//創建分頁類
class Page {
private $_all_num; //數據總個數
private $_page_size; //每頁顯示幾條數據
private $_page; //當前頁面
private $_all_page; //總頁碼
private $_url; //頁面地址
private $_limit; //數據庫查詢語句
private $_sign; //地址符號
//攔截器
public function __get($_key) {
return $this->$_key;
}
public function __construct($_all_num,$_page_size) {
$this->_all_num = $_all_num;
$this->_page_size = $_page_size;
$this->_all_page = ceil($this->_all_num / $this->_page_size);
$this->_page = $this->setPage();
$this->_url = $this->setUrl();
$this->_limit = 'LIMIT '.($this->_page * $this->_page_size - $this->_page_size).','.$this->_page_size;
}
//獲取當前頁碼
private function setPage() {
if (!empty($_GET['page']) && $_GET['page'] > 0) {
if ($_GET['page'] <= $this->_all_page) {
return ceil($_GET['page']);
} else {
return $this->_all_page;
}
} else {
return 1;
}
}
//獲取地址
private function setUrl() {
$_url = $_SERVER['REQUEST_URI'];
if (!empty($_url)) {
$_par_url = parse_url($_url);
if (isset($_par_url['query'])) {
parse_str($_par_url['query'],$_arr);
if (isset($_arr['page'])) {
unset($_arr['page']);
}
if (!empty($_arr)) {
$_http = http_build_query($_arr);
$_end_url = $_par_url['path'] . '?' . $_http;
$this->_sign = '&';
} else {
$_end_url = $_par_url['path'];
$this->_sign = '?';
}
} else {
$_end_url = $_par_url['path'];
$this->_sign = '?';
}
}
return $_end_url;
}
//顯示分頁
public function numPage() {
$_num = '';
//前面
for ($i=1; $i<$this->_page; $i++) {
if ($i<1) continue;
$_num .= "<a href='".$this->_url. $this->_sign ."page=".$i."'>".$i."</a>";
}
//自己
$_num .= "<a class='me' href='".$this->_url. $this->_sign ."page=".$this->_page."'>".$this->_page."</a>";
//後面
for ($i=$this->_page+1; $i<=$this->_all_page; $i++) {
if ($i>$this->_all_page) continue;
$_num .= "<a href='".$this->_url. $this->_sign ."page=".$i."'>".$i."</a>";
}
return $_num;
}
}
?>
大家可以將上面一段代碼復制到文本編輯器中這樣看的會舒服一點!下面講一下具體步驟:
1、創建一個分頁類:class Page {};
2、獲取需要顯示數據的個數,並且記錄在Page類中,這裡數據的個數通過數據去獲取就不詳細說了!然後設置每頁顯示數據的條數!
3、獲取當前頁面地址!
這段代碼大概意思就是當你的地址跟著?時,那麼點擊分頁就用&page=;當你的地址後面沒有後綴或者只有?page=,那麼點擊分頁就用?page=
4、獲取當前頁碼
這裡的頁碼必須是整數,所以可以用ceil這個函數,還要注意用戶的惡意修改地址!
4、做分頁元素,這裡只是做一個簡單的數字分頁,更復雜用戶體驗更好的,大家可以自行擴展!
5、設置數據庫庫的查詢條數,也就是LIMIT;舉個例子:比如我現在有10條數據,設置每頁顯示5條數據,那麼
當用戶點擊第一頁時,LIMIT 0,5
當用戶點擊第二頁時,LIMIT 5,5
6、這段代碼的調用:
$_page = new Page(10,5);
$_page->page();
上面的10是總的數據個數,5是你想要每頁顯示數據的個數,$_page->page()就是頁面的分頁,直接echo出來就行啦,注意你還得將Page類中的$_limit調用出來放到數據庫查詢語句中,這樣基本的php分頁就出來啦!
此文章屬於王業樓的個人博客原創,若要轉載請注明出處:王業樓的個人博客 www.ly89.cn