php分页技术的作用,分页原理技术细节剖析(php+mysql)实例
提到分頁,大家都不陌生,在我們?nèi)粘g覽網(wǎng)頁時常遇到,尤其新聞文章列表等都有分頁,如下圖所示:
分頁實例
下面,通過一個實例為大家剖析一下分頁原理上技術細節(jié)。
一、功能開發(fā)思路
在分頁功能的實現(xiàn)前,先做了一個思維導圖理清一下大概的思路,廢話不多說,上圖:
分頁原理思維導圖
二、功能開發(fā)各模塊介紹
用到的工具有,輕量級編輯器editplus,mysql數(shù)據(jù)庫管理工具phpmyadmin,環(huán)境為windows 7下Apache+PHP+Mysql。下面,給大家分享一下,運用php、mysql如何實現(xiàn)如上分頁效果。
1.mysql數(shù)據(jù)庫的創(chuàng)建準備
在設計這個功能時,創(chuàng)建了一個數(shù)據(jù)庫"fenye",表名為"people",設定了字段——序號(id,為主鍵,自增),姓名(name),性別(sex),如下圖:
數(shù)據(jù)庫"fenye"結構圖
2.php功能實現(xiàn)介紹
php功能頁面,設計了三個——公共調(diào)用頁conn.php,添加信息頁add.php,信息列表頁list.php。下面來做各功能頁面的技術細節(jié)分析。 (1).公共調(diào)用頁conn.php
該功能頁面主要實現(xiàn)數(shù)據(jù)庫及表的連接,數(shù)據(jù)庫編碼的設定,代碼如下:
注解 @ 符號用于屏蔽因mysql連接失敗時報錯顯示的mysql信息,出于用戶體驗和安全性考慮;
die()函數(shù):用于mysql數(shù)據(jù)庫連接失敗時拋出錯誤提示信息,其中內(nèi)容自定義。 (2).添加信息頁add.php
該功能頁面主要向數(shù)據(jù)庫內(nèi)添加信息記錄,核心功能代碼為插入sql語句,完整代碼如下: 添加信息
注解 三元判斷語句:條件 ? 結果1 : 結果2——成功執(zhí)行結果1,失敗執(zhí)行結果2
mysql_error()函數(shù)用于返回上一個mysql操作產(chǎn)生的文本錯誤信息提示
(3)信息列表頁list.php
該頁主要功能用于呈現(xiàn)信息列表,并實現(xiàn)分頁功能,先上完整代碼,如下: 添加信息
序號姓名性別$pagesize){ //若總條數(shù)大于每頁記錄顯示條數(shù),執(zhí)行以下分頁代碼 if($pageval<=1){ //當傳遞過來的參數(shù)'page'小于等于1時(即避免頁碼出現(xiàn)0或負值) $pageval=1; echo "共 $num 條 ".$pagenum."下一頁 末頁"; }else if((($num/$pagesize)-$pageval)<=0){ //總頁碼(不一定為整數(shù))與當前頁碼的差小于等于0時,即最后一頁,執(zhí)行以下代碼 echo "共 $num 條 首頁 上一頁".$pagenum; }else{ //其他情況,即頁碼非第一頁或最后一頁,執(zhí)行以下代碼 echo "共 $num 條 首頁 上一頁".$pagenum."下一頁 末頁"; }}$sql="select * from `people` limit $page $pagesize"; //依照limit條件查詢記錄,賦值$sql為查詢語句$query=mysql_query($sql); //執(zhí)行代碼while($rs=mysql_fetch_array($query)){ //循環(huán)將每條記錄以數(shù)組形式存入$rs?>
由于代碼篇幅較長,下面根據(jù)功能實現(xiàn)的思路進行細節(jié)剖析:首先,找到功能實現(xiàn)的核心基礎,頁碼分頁核心代碼:select * from `表名` limit 起始值,讀取條數(shù);即: $sql="select * from `people` limit $page $pagesize";
需要設定兩個變量,起始值$page,讀取條數(shù)$pagesize,$pagesize可人為賦值,起始值$page的獲取則要費一番周折,需要用到分頁公式:起始值=(當前頁面-1)* 每頁顯示條數(shù),因為我們需要關聯(lián)到當前的頁碼$pageval,因此得到如下代碼: if($_GET["page"]){ $pageval=$_GET["page"]; $page=($pageval-1)*$pagesize; $page.=",";}
獲取$page后,我們還要實現(xiàn)首頁、上一頁、下一頁、末頁、頁碼羅列、記錄總條數(shù)的功能,記錄總條數(shù)相對簡單,直接查詢所有記錄條數(shù)$num即可,即: $numq=mysql_query("select * from `people`");$num=mysql_num_rows($numq);
至于首頁、上一頁、下一頁、末頁、頁碼羅列這些,則需要運用在超鏈接設置對應的參數(shù)'?page='來實現(xiàn),如: 格式:目標頁
所以$url和對應頁碼是需要想辦法獲取的。首先我們來看$url的獲取,要用到兩個函數(shù):$_SERVER["REQUEST_URI"](用于獲取完整的URL)、parse_url()(將url按照組成部分分類后,以數(shù)組形式存放),然后取出路徑path,即: $url=$_SERVER["REQUEST_URI"];$url=parse_url($url);$url=$url[path];
$url獲取后,我們來看一下對應頁碼的獲取,首頁的參數(shù)獲取最簡單,直接'page=1'即可,上一頁、下一頁分別為($pageval-1),($pageval+1),末頁則為'page=總頁碼',即$sumpage。此處,首頁、末頁以及中間頁需要進行條件判斷: 首頁:當前頁$pageval小于等于1時;
末頁:當$num(總條數(shù))與$pagesize(每頁顯示條數(shù))的商與當前頁面$pageval的差值小于等于0(即兩者之商小于或等于當前頁值)時;
中間頁:除以上情況。即 if($num>$pagesize){ if($pagesize<=1){ //首頁 $pagesize=1; echo "共 $num 頁 ".$pagenum."下一頁 末頁"; }else if((($num/$pagesize)-$pageval)<=0){ //末頁 echo "共 $num 頁 首頁 上一頁".$pagenum; }else{ //中間頁 echo "共 $num 頁 首頁 上一頁".$pagenum."下一頁 末頁"; }}
其中末頁'page=$sumpage'的取值需兩種情況:當$num(總條數(shù))與$pagesize(每頁顯示條數(shù))的商為整數(shù)時,$sumpage=$sum/$pagesize;當兩者之商不為整數(shù)時,則$sumpage=intval($sum/$pagesize)+1。即 if(is_integer($sum/$pagesize)){ $sumpage=$sum/$pagesize;}else{ $sumpage=($sum/$pagesize)+1;}
最后,$pagenum(頁碼羅列)需要從第一頁到最后一頁依次打印,所以,此處運用for循環(huán),并進行條件判斷:當處于當前頁碼時,即$i==$pageval,不加超鏈接;除此之外,加超鏈接,即: for($i=1;$i<=$sumpage;$++){ if($i==$pageval){ $pagenum.=$i." "; }else{ $pagenum.="".$i.""; }}
自此,整個分頁功能的各個功能代碼段一一剖析出來,在此代碼基礎上,稍加修改和調(diào)整樣式,即可實現(xiàn)常見實用的分頁功能。
(4)總結
其實,對于每一位PHP學習者來說,打好基礎都是非常重要的,可以使我們在以后的學習中避免重復犯錯,影響學習進度和深度,這里推薦大家多通讀幾遍PHP:PHP manual,此外推薦大家一個PHP的REPL:PsySH,供實驗調(diào)試PHP代碼,在此祝大家加油,玩轉(zhuǎn)PHP!
本條技術文章來源于互聯(lián)網(wǎng),如果無意侵犯您的權益請點擊此處反饋版權投訴
本文系統(tǒng)來源:php中文網(wǎng)
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結
以上是生活随笔為你收集整理的php分页技术的作用,分页原理技术细节剖析(php+mysql)实例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python语言处理excel_Pyth
- 下一篇: 计算机计算exp函数原理,exp()函数