<? //爲了避免重複包含文件而造成錯誤,加了判斷函數是否存在的條件: if(!function_exists(pageft)){ //定義函數pageft(),三個參數的含義爲: //$totle:信息總數; //$displaypg:每頁顯示信息數,這裏設置爲默認是20; //$url:分頁導航中的鏈接,除了加入不同的查詢信息“page”外的部分都與這個URL相同。 // 默認值本該設爲本頁URL(即$_SERVER["REQUEST_URI"]),但設置默認值的右邊只能爲常量,所以該默認值設爲空字符串,在函數內部再設置爲本頁URL。 function pageft($totle,$displaypg=20,$realtotal,$url=''){ //定義幾個全局變量: //$page:當前頁碼; //$firstcount:(數據庫)查詢的起始項; //$pagenav:頁面導航條代碼,函數內部並沒有將它輸出; //$_SERVER:讀取本頁URL“$_SERVER["REQUEST_URI"]”所必須。 global $page,$firstcount,$pagenav,$_SERVER; //爲使函數外部可以訪問這裏的“$displaypg”,將它也設爲全局變量。注意一個變量重新定義爲全局變量後,原值被覆蓋,所以這裏給它重新賦值。 $GLOBALS["displaypg"]=$displaypg; if(!$page) { $page=1; } //echo "page:".$page."<br>"; //如果$url使用默認,即空值,則賦值爲本頁URL: if(!$url){ $url=$_SERVER["REQUEST_URI"]; $thisurl = $_SERVER["REQUEST_URI"]; } //echo "url:".$url."<br>"; //URL分析: $parse_url=parse_url($url); //echo "parse_url:".$parse_url."<br>"; $url_query=$parse_url["query"]; //單獨取出URL的查詢字串 //echo "url_query:".$url_query."<br>"; if($url_query){ //因爲URL中可能包含了頁碼信息,我們要把它去掉,以便加入新的頁碼信息。 //這裏用到了正則表達式,請參考“PHP中的正規表達式”(http://www.pconline.com.cn/pcedu/empolder/wz/php/10111/15058.html) $url_query=ereg_replace("(^|&)page=$page","",$url_query); //echo "url_query1:".$url_query."<br>"; //將處理後的URL的查詢字串替換原來的URL的查詢字串: $url=str_replace($parse_url["query"],$url_query,$url); //echo "url:".$url."<br>"; //在URL後加page查詢信息,但待賦值: if($url_query) $url.="&page"; else $url.="page"; } else { $url.="?page"; } //echo "url:".$url."<br>"; $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> 條,共<B> $realtotal </B>條記錄"; //如果只有一頁則跳出函數: if($lastpg<=1) return false; $pagenav.=" <a href="$url=1" mce_href="$url=1">首頁</a> "; if($prepg) $pagenav.=" <a href="$url=$prepg" mce_href="$url=$prepg">上頁</a> "; else $pagenav.=" 上頁 "; if($nextpg) $pagenav.=" <a href="$url=$nextpg" mce_href="$url=$nextpg">下頁</a> "; else $pagenav.=" 下頁 "; $pagenav.=" <a href="$url=$lastpg" mce_href="$url=$lastpg">尾頁</a> "; //下拉跳轉列表,循環列出所有頁碼: $pagenav.=" 到第 <select name='topage' size='1' style="font-size:12px" mce_style="font-size:12px" 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 $sql = "SELECT * FROM `table_name`"; $result = mysql_query($sql); $cout_rows = mysql_fetch_rows($result); //引用分頁函數 pageft($cout_rows, 10, $cout_rows); $sql .= " limit $firstcount, $displaypg"; $result = mysql_query($sql); //頁尾顯示 echo $pagenav; ?>
本文來自:http://www.le23.com/index.php/2010/06/17/php-page/