本文目錄一覽:
ThinkPHP使用心得分享-分頁類Page的用法
ThinkPHP中的Page類在ThinkPHP/Extend/Library/ORG/Util/Page.class.php中,所以使用前要引入Page類:
複製代碼
代碼如下:
import(‘ORG.Util.Page’);
//Page類的引入
$db
=
M(‘abc’);//實例化數據表abc
$where
=
array(
‘id’=’2’;
);//條件語句$where,例表中字段id的值為2
$count
=
$db-where($where)-count();//獲取符合條件的數據總數count
$page
=
new
Page($count,
10);//實例化page類,傳入數據總數和每頁顯示10條內容
$limit
=
$page-firstRow
.
‘,’
.
$page-listRows;//每頁的數據數和內容$limit
$result
=$db-where($where))-limit($limit)-select();//分頁查詢結果
$this-result
=
$result;//賦值
$this-show
=
$page-show();//獲取分頁的底部信息
以上代碼是分頁類實現的基本語句,當然喜歡使用原生sql語句的朋友也可以配合原生sql語句實現查詢分頁:
複製代碼
代碼如下:
import(‘ORG.Util.Page’);
//Page類的引入
$db
=
M(‘abc’);//實例化數據表abc
$where
=
array(
‘id’=’2’;
);//條件語句$where,例表中字段id的值為2
$count
=
$db-where($where)-count();//獲取符合條件的數據總數count
$page
=
new
Page($count,
10);//實例化page類,傳入數據總數和每頁顯示10條內容
$Modle
=
new
Model();//實例化新數據模型
$sql
=
‘select
id,name
from
abc
where
‘.$where.’
limit
‘.$page-firstRow.’,’.$page-listRows;//sql語句
$result
=
$Modle-query($sql);//執行sql語句
$this-result
=
$result
$this-show=$page-show();
當然,分佈查詢獲取的內容也可以先對查詢完的數據進行處理再賦值,比如
複製代碼
代碼如下:
…
$result
=$db-where($where))-limit($limit)-select();//分頁查詢結果
$res
=
abc($result);//abc方法(自定義方法或php函數)對結果$result進行數據排序或重組處理等
$this-result
=
$res;//賦值
誰來指點一下php通用分頁函數該怎麼寫
function page($sql,$pagesize){
$nowpage=$_GET[‘nowpage’];//獲取當前也
$result=mysql_query($sql);//執行sql查詢語句
$total = mysql_num_rows($result);//總記錄條數
$totalpage = ceil($total/$pagesize);//總頁數
$nowpage=$nowpage1?1:$nowpage;//保證頁數始終大於或等於1
if(!$total){//如果沒有記錄則返回0
return 0;
exit;
}
$nowpage=$nowpage=$totalpage?$totalpage:$nowpage;//判斷當前也是否大於總頁數 如果大於總頁數則當前頁為總頁數
$nowrow=($nowpage-1)*$pagesize;//當前記錄的位置
$result = mysql_query($sql.” limit $nowrow,$pagesize”);
$url=$_SERVER[‘PHP_SELF’];//當頁的url地址
if($nowpage==1)//如果頁數只有一頁 則首頁和上一頁無鏈接
$st= “div align=’center’首頁|上一頁”;
else
$st= “a href=$url?nowpage=1首頁/a | a href=$url?nowpage=”.($nowpage-1).”上一頁/a”;
if($nowpage==$totalpage) //如果頁數是最後一頁 則末頁和下一頁無鏈接
$st.=”| 下一頁 | 末頁 “;
else
$st.= “| a href=$url?nowpage=”.($nowpage+1).”下一頁/a | a href=$url?nowpage=$totalpage末頁/a”;
$st.= ” 到第 select name=’nowpage’ size=’1′ onchange=’window.location=\”$url?nowpage=\”+this.value’\n”;//指定跳轉至哪一頁
$st.=”option value=’$nowpage’ select$nowpage/option\n”;
for ($i = 1; $i = $totalpage; $i++) {
if ($i == $nowpage){}
else
$st.=”option value=’$i’$i/option\n”;
}
$st.=”/select 頁/br”;
$st.=”頁次:”.$nowpage.” /”. $totalpage.”頁 共”.$total.”條信息” ;
return array($result,$st);
}
自定義PHP分頁函數
以下為引用的內容:
?
//為了避免重複包含文件而造成錯誤,加了判斷函數是否存在的條件:
if(!function_exists(pageft)){
//定義函數pageft(),三個參數的含義為:
//$totle:信息總數;
//$displaypg:每頁顯示信息數,這裡設置為默認是20;
//$url:分頁導航中的鏈接,除了加入不同的查詢信息「page」外的部分都與這個URL相同。
// 默認值本該設為本頁URL(即$_SERVER[“REQUEST_URI”]),但設置默認值的右邊只能為常量,所以該默認值設為空字符串,在函數內部再設置為本頁URL。
function pageft($totle,$displaypg=20,$url=”){
//定義幾個全局變量:
//$page:當前頁碼;
//$firstcount:(數據庫)查詢的起始項;
//$pagenav:頁面導航條代碼,函數內部並沒有將它輸出;
//$_SERVER:讀取本頁URL「$_SERVER[“REQUEST_URI”]」所必須。
global $page,$firstcount,$pagenav,$_SERVER;
//為使函數外部可以訪問這裡的「$displaypg」,將它也設為全局變量。注意一個變量重新定義為全局變量後,原值被覆蓋,所以這裡給它重新賦值。
$GLOBALS[“displaypg”]=$displaypg;
$page=$_GET[‘page’];
if(!$page) $page=1;
//如果$url使用默認,即空值,則賦值為本頁URL:
if(!$url){ $url=$_SERVER[“REQUEST_URI”];}
//URL分析:
$parse_url=parse_url($url);
$url_query=$parse_url[“query”]; //單獨取出URL的查詢字串
if($url_query){
//因為URL中可能包含了頁碼信息,我們要把它去掉,以便加入新的頁碼信息。
//這裡用到了正則表達式,請參考「PHP中的正規表達式」()
$url_query=ereg_replace(“(^|)page=$page”,””,$url_query);
//將處理後的URL的查詢字串替換原來的URL的查詢字串:
$url=str_replace($parse_url[“query”],$url_query,$url);
//在URL後加page查詢信息,但待賦值:
if($url_query) $url.=”page”; else $url.=”page”;
}else {
$url.=”?page”;
}
//頁碼計算:
$lastpg=ceil($totle/$displaypg); //最後頁,也是總頁數
$page=min($lastpg,$page);
$prepg=$page-1; //上一頁
$nextpg=($page==$lastpg ? 0 : $page+1); //下一頁
$firstcount=($page-1)*$displaypg;
//開始分頁導航條代碼:
$pagenav=”顯示第 B”.($totle?($firstcount+1):0).”/B-B”.min($firstcount+$displaypg,$totle).”/B 條記錄,共 $totle 條記錄”;
//如果只有一頁則跳出函數:
if($lastpg=1) return false;
$pagenav.=” a href=’$url=1’首頁/a “;
if($prepg) $pagenav.=” a href=’$url=$prepg’前頁/a “; else $pagenav.=” 前頁 “;
if($nextpg) $pagenav.=” a href=’$url=$nextpg’後頁/a “; else $pagenav.=” 後頁 “;
$pagenav.=” a href=’$url=$lastpg’尾頁/a “;
//下拉跳轉列表,循環列出所有頁碼:
$pagenav.=” 到第 select name=’topage’ size=’1′ onchange=’window.location=\”$url=\”+this.value’\n”;
for($i=1;$i=$lastpg;$i++){
if($i==$page) $pagenav.=”option value=’$i’ selected$i/option\n”;
else $pagenav.=”option value=’$i’$i/option\n”;
}
$pagenav.=”/select 頁,共 $lastpg 頁”;
}
}
?
php=mysql調用方法:
?
//(前面程序略)
include(“pageft.php”); //包含「pageft.php」文件
//取得總信息數
$result=mysql_query(“select * from mytable”);
$total=mysql_num_rows($result);
//調用pageft(),每頁顯示10條信息(使用默認的20時,可以省略此參數),使用本頁URL(默認,所以省略掉)。
pageft($total,10);
//現在產生的全局變量就派上用場了:
$result=mysql_query(“select * from mytable limit $firstcount,$displaypg “);
while($row=mysql_fetch_array($result)){
//(列表內容略)
}
?
//———–用法
連接sqlserver
?php
$query=”select * from zhufu”;
$result=mssqlresult($query);
$numrows = mssql_num_rows($result);
$pagesize=20;
$Url=”index.php”;
pageft($numrows,$pagesize,$Url);
$sql = “select top $pagesize * from zhufu where (id not in (select top $firstcount id from zhufu order by id desc)) order by id desc”;
//echo $sql;
$result1= mssqlresult($sql);
while( $row=mssql_fetch_assoc($result1))
{
$row1=trim($row[“city”]).trim($row[“xuexiao”]);
echo
“tr
td class=’bline fontblack’ align = ‘center'”.$row[“id”].”/td
td class=’bline’ align=’left’span class=’fontgreen’font color=’green'”.trim(iconv(“gb2312″,”utf-8”,$row[“sendname”])).”/font /span給”.trim(iconv(“gb2312″,”utf-8″,$row1)).”的font color=’blue'”.trim(iconv(“gb2312″,”utf-8”,$row[“name”])).”/font 的祝福:a href=’info.php?id=”.$row[“id”].”‘ target=’_blank’font color=’#E60638′”.trim((cut_str(iconv(“gb2312″,”utf-8”,$row[“neirong”]),20))).”…./font/a/td
td class=’bline’ align = ‘center'”.$row[“riqi”].”/td
/tr
“;
}
?
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/200958.html