摘要:男獲取端口號(hào)當(dāng)前運(yùn)行腳本所在的服務(wù)器的主機(jī)名。如果腳本運(yùn)行于虛擬主機(jī)中,該名稱(chēng)是由那個(gè)虛擬主機(jī)所設(shè)置的值決定本文由甲爪廣告聯(lián)盟整理編輯
同驗(yàn)證碼類(lèi),分頁(yè)也是在個(gè)人博客,論壇等網(wǎng)站中不可缺少的方式,通過(guò)分頁(yè)可以在一個(gè)界面展示固定條數(shù)的數(shù)據(jù),而不至于將所有數(shù)據(jù)全部羅列到一起,實(shí)現(xiàn)分頁(yè)的原理其實(shí)就是對(duì)數(shù)據(jù)庫(kù)查詢(xún)輸出加了一個(gè)limit限制,接下來(lái)我們就開(kāi)始準(zhǔn)備今天分頁(yè)類(lèi)的邏輯 #### 邏輯準(zhǔn)備 > 實(shí)現(xiàn)分頁(yè),我們需要獲取準(zhǔn)備以下屬性和方法 PHP 屬性{ 數(shù)據(jù)總條數(shù) 每一頁(yè)顯示的條數(shù) 計(jì)算出總頁(yè)數(shù) 獲取當(dāng)前是第幾頁(yè) 顯示上一頁(yè) 顯示下一頁(yè) 顯示首頁(yè) 顯示尾頁(yè) 每一頁(yè)的url 數(shù)據(jù)限制limit } 方法{ 構(gòu)造函數(shù) 計(jì)算總頁(yè)數(shù) 獲取當(dāng)前頁(yè) 獲取上一頁(yè) 獲取下一頁(yè) 獲取首頁(yè) 獲取尾頁(yè) 獲取當(dāng)前頁(yè)面url 獲取上一頁(yè)url 獲取下一頁(yè)url 獲取首頁(yè)url 獲取尾頁(yè)irl 生成limit記錄 重新生成url地址 顯示分頁(yè)鏈接,顯示分頁(yè)情況 } #### 根據(jù)上面的邏輯,下一步將文字轉(zhuǎn)換為代碼 首先,我們先聲明一個(gè)Page類(lèi),按照邏輯進(jìn)行屬性聲明,并且進(jìn)行初始化 php class Page { //記錄總條數(shù) protected $total; //每頁(yè)顯示幾條 protected $nums; //總頁(yè)數(shù) protected $totalPages; //當(dāng)前頁(yè)碼 protected $currentPage; //上一頁(yè)頁(yè)碼 protected $prevPage; //下一頁(yè)頁(yè)碼 protected $nextPage; //首頁(yè)頁(yè)碼 protected $firstPage; //尾頁(yè)頁(yè)碼 protected $endPage; //url protected $url; //limit,傳到數(shù)據(jù)庫(kù)的limit protected $limit; //構(gòu)造函數(shù),初始化 public function __construct($total, $nums) { $this->total = $total; $this->nums = $nums; $this->totalPages = $this->getTotalPages; $this->currentPage = $this->getCurrentPage; $this->getPrevPage; $this->getNextPage; $this->getFirstPage; $this->getEndPage; $this->getUrl; } } 接下來(lái)我們開(kāi)始完善方法 - 計(jì)算總頁(yè)數(shù) php protected funciton getTotalPages { return ceil($this->total / $this->$nums); } - 獲取當(dāng)前頁(yè)碼 php protected function getCurentPage { //判斷如果存在page參數(shù)并且page大于0,返回實(shí)際值,否則返回1 if(isset($_GET["page"]) && intval($_GET["page"]) > 0) { $this->currentPage = intval($_GET["page"]); } else { $this->currentPage = 1; } return $this->currentPage; } - 獲取上一頁(yè) php protected function getPrevPage { $this->prevPage = $this->currentPage - 1; if($this->prevPage prevPage = 1; } return $this->prevPage; } - 獲取下一頁(yè) php protected function getNextPage { $this->nextPage = $this->currentPage + 1; return $this->nextPage; } - 獲取首頁(yè) php protected function getFirstPage { $this->firstPage = 1; return $this->firstPage; } - 獲取尾頁(yè) PHP protected function getEndPage { $this->endPage = $this->totalPages; return $this->endPage; } #### 接下來(lái)開(kāi)始拼接每個(gè)頁(yè)碼的url - 獲取當(dāng)前頁(yè)的url php protected function getCurrentUrl { return $this->url."$page=".$this->currentPage; } - 獲取前一頁(yè)的url php protected function getPrevUrl { return $this->url."&page=".$this->prevPage; } - 獲取下一頁(yè)的url php protected function getNextUrl { return $this->url."&page=".$this->nextPage; } - 獲取首頁(yè)的url php protected function getFirstUrl { return $this->url."&page=".$this->firstPage; } - 獲取尾頁(yè)的url php protected function getEndUrl { return $this->url."&page=".$this->endPage; } #### 生成limit記錄 PHP public function limit { return ($this->currentPage - 1) * $this->nums.",".$this->nums; } #### 生成url地址 php public function getUrl { //獲取當(dāng)前頁(yè)面的文件位置 $url = $_SERVER["REQUEST_URI"]; //將url參數(shù)解析成數(shù)組 $parse = parse_url($url); //獲得域名地址 $path = $parse["path"]; //獲取參數(shù) $query = isset($parse["query"]) ? $parse["query"] : false; //如果有參數(shù),把page這個(gè)參數(shù)先給干掉,因?yàn)槲覀円匦缕唇?if($query) { parse_str($query,$query); //干掉page參數(shù),保留其他參數(shù) unset($query["page"]); //http_build_query拼將參數(shù)拼接成請(qǐng)求 $uri = $parse["path"]."?".http_build_query($query); } else { $uri = rtrim($parse["path"],"?")."?"; } //智能識(shí)別https和http協(xié)議和端口號(hào) $protocal = (isset($_SERVER["SERVER_PORT"]) && $_SERVER["SERVER_PORT"] == 443) ? "https://" : "http://"; switch ($_SERVER["SERVER_PORT"]) { case 80: case 443: $uri = $protocal.$_SERVER["SERVER_NAME"].$uri; break; default: $uri = $protocal.$_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$uri; break; } $this->url = $uri; } > 到此所有的邏輯方面都已經(jīng)處理完啦,接下來(lái)的render函數(shù)用來(lái)顯示分頁(yè)的鏈接 PHP public function render { return array( ["first" => $this->getFirstUrl()], ["prev" => $this->getPrevUrl()], ["current" => $this->getCurrentUrl()], ["next" => $this->getNextUrl()], ["end" => $this->getEndUrl()] ); } ### 哦也,就這么愉快的結(jié)束啦 使用方法如下 PHP //new一個(gè)對(duì)象 $page = new Page(102,10); //打印出來(lái)上頁(yè)/下頁(yè)/首頁(yè)/尾頁(yè)……的url var_dump($page->render); #### 后記 --- php $url = http://www.jiazhua.com/OOP/Page.class.php?page=1 parse_url($url):將url的文件路徑和參數(shù)分開(kāi)并保存到數(shù)組中 .......................................... . array (size=2) ."path" => string "/OOP/Page.class.php" (length=36) ."query" => string "page=1" (length=6) .......................................... ... $query = "page=1&num=2&sex=男" parse_str($query,$query):將帶參數(shù)的字符串解析成數(shù)組 .......................................... . array . "page" => 1 ."num" => 2 ."sex" => "男" .......................................... ... $query = ["num"=>1,"sex"=>"男"] http_build_query($query):使用給出的關(guān)聯(lián)(或下標(biāo))數(shù)組生成一個(gè)經(jīng)過(guò) URL-encode 的請(qǐng)求字符串。 ......................................... . string ."num=1&&sex="男"" ......................................... ... $_SERVER["SERVER_PORT"] 獲取端口號(hào) $_SERVER["SERVER_NAME"] 當(dāng)前運(yùn)行腳本所在的服務(wù)器的主機(jī)名。如果腳本運(yùn)行于虛擬主機(jī)中,該名稱(chēng)是由那個(gè)虛擬主機(jī)所設(shè)置的值決定
本文由甲爪cpa廣告聯(lián)盟整理編輯!
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/22358.html
摘要:本文就這一問(wèn)題給出解決方案。具體修改的代碼是在分頁(yè)類(lèi)文件的最后加上一個(gè)自定義函數(shù),用于替換中的參數(shù)分隔符號(hào),函數(shù)內(nèi)容如下自學(xué)博客修改最終生成的在文件的第行,將原來(lái)的修改為生成標(biāo)準(zhǔn)的經(jīng)過(guò)這兩步修改就可以解決分頁(yè)亂碼的問(wèn)題了。 thinkphp自帶的分頁(yè)類(lèi)存在bug,例如當(dāng)我們搜索關(guān)鍵詞時(shí),關(guān)鍵詞為中文,第二次點(diǎn)擊分頁(yè)的時(shí)候,就會(huì)亂碼,不能正常的顯示我們需要的頁(yè)碼。本文就這一問(wèn)題給出解決方...
摘要:信息列表循環(huán)賦值分頁(yè)信息部分這一步是實(shí)現(xiàn)無(wú)刷新分頁(yè)的重點(diǎn),用到了的通信,通過(guò)與數(shù)據(jù)庫(kù)的交互,將獲取到的數(shù)據(jù)寫(xiě)到模板中,替換掉之前的數(shù)據(jù)集,達(dá)到分頁(yè)的目的。 前言 thinkphp框架自帶的分頁(yè)類(lèi)是每次翻頁(yè)都要刷新一下整個(gè)頁(yè)面,這種翻頁(yè)的用戶(hù)體驗(yàn)顯然是不太理想的,我們希望每次翻頁(yè)只刷新我們想要的數(shù)據(jù)集部分的數(shù)據(jù),這樣我們很容易想到ajax異步通信,用ajax與數(shù)據(jù)庫(kù)(本人在開(kāi)發(fā)過(guò)程中使用...
摘要:項(xiàng)目源碼地址鏈接地址簡(jiǎn)單版框架特點(diǎn)單入口采用面向?qū)ο笏枷耄谠O(shè)計(jì)思想,使用觀察者,注冊(cè)器,工廠,代理,特性等模式開(kāi)發(fā)。提供一些常用類(lèi)圖片分頁(yè)文件上傳驗(yàn)證碼等。提供常用的插件文件壓縮合并觀察等。基于通過(guò)數(shù)組下標(biāo)訪問(wèn)配置文件。 項(xiàng)目源碼地址 鏈接地址(https://github.com/cxp1539/mi... Framework 簡(jiǎn)單版php框架 Framework特點(diǎn) 單入口i...
摘要:相關(guān)信息,面向過(guò)程,面向?qū)ο螅p量級(jí)。輕量級(jí)功能實(shí)用,面向過(guò)程和面向?qū)ο蠡旌祥_(kāi)發(fā)。找到文件為文件名為驗(yàn)證碼類(lèi)沒(méi)有在自動(dòng)加載類(lèi)中載入,需要手動(dòng)載入。底層的和會(huì)影響原始的框架中的引入,可以使用框架中提供的引入。 不使用框架的問(wèn)題 在實(shí)際工作中,如果不使用框架會(huì)遇到的問(wèn)題。 程序項(xiàng)目生命時(shí)間非常短(維護(hù)性,生命力弱) 分共協(xié)作開(kāi)發(fā)項(xiàng)目,彼此代碼風(fēng)格不一致。 開(kāi)發(fā)程序,喜歡挖坑。 開(kāi)發(fā)者離職...
摘要:中在基礎(chǔ)集合類(lèi)路由類(lèi)中和分頁(yè)類(lèi)中等,都用到了對(duì)象遍歷這個(gè)小知識(shí)點(diǎn),這些類(lèi)都是實(shí)現(xiàn)了這個(gè)接口,這個(gè)接口定義,返回的是迭代器對(duì)象。標(biāo)準(zhǔn)擴(kuò)展庫(kù)中提供了很多默認(rèn)迭代器實(shí)現(xiàn)類(lèi),比較常用的是數(shù)組迭代器對(duì)象,參考官網(wǎng)迭代器。 說(shuō)明:本文章主要講述PHP的對(duì)象遍歷(Iterator)知識(shí)點(diǎn)。由于Laravel框架中就在集合(Collection)中用到了對(duì)象遍歷知識(shí)點(diǎn),故記錄并學(xué)習(xí)之。同時(shí),作者會(huì)將開(kāi)...
閱讀 2130·2021-11-18 10:07
閱讀 3507·2021-09-04 16:48
閱讀 3214·2019-08-30 15:53
閱讀 1235·2019-08-30 12:55
閱讀 2453·2019-08-29 15:08
閱讀 3149·2019-08-29 15:04
閱讀 2879·2019-08-29 14:21
閱讀 2906·2019-08-29 11:21