本文目錄一覽:
- 1、php分頁代碼 怎麼寫
- 2、求php分頁代碼
- 3、php分頁代碼
php分頁代碼 怎麼寫
Web開發是今後分散式程式開發的主流,通常的web開發都要涉及到與資料庫打交道,客戶端從伺服器端讀取通常都是以分頁的形式來顯示,一頁一頁的閱讀起來既方便又美觀。所以說寫分頁程序是web開發的一個重要組成部分,在這裡,我們共同來研究分頁程序的編寫。
一、分頁程序的原理
分頁程序有兩個非常重要的參數:每頁顯示幾條記錄($pagesize)和當前是第幾頁($page)。有了這兩個參數就可以很方便的寫出分頁程序,我們以MySql資料庫作為數據源,在mysql里如果要想取出表內某段特定內容可以使用的 T-SQL語句:select * from table limit offset,rows來實現。這裡的offset是記錄偏移量,它的計算方法是offset=$pagesize*($page-1),rows是要顯示的記錄條數,這裡就是$page。也就是說select * from table limit 10,10這條語句的意思是取出表裡從第11條記錄開始的20條記錄。
二、主要代碼解析
$pagesize=10; //設置每一頁顯示的記錄數
$conn=mysql_connect(“localhost”,”root”,””); //連接資料庫
$rs=mysql_query(“select count(*) from tb_product”,$conn); //取得記錄總數$rs
$myrow = mysql_fetch_array($rs);
$numrows=$myrow[0];
//計算總頁數
$pages=intval($numrows/$pagesize);
//判斷頁數設置
if (isset($_GET[‘page’])){
$page=intval($_GET[‘page’]);
}
else{
$page=1; //否則,設置為第一頁
}
三、創建用例用表myTable
create table myTable(id int NOT NULL auto_increment,news_title varchar(50),news_cont text,add_time datetime,PRIMARY KEY(id))
四、完整代碼
<html>
<head>
<title>php分頁示例</title>
<meta http-equiv=”Content-Type” content=”text/html; charset=gb2312″>
</head>
<body>
<?php
$conn=mysql_connect(“localhost”,”root”,””);
//設定每一頁顯示的記錄數
$pagesize=1;
mysql_select_db(“mydata”,$conn);
//取得記錄總數$rs,計算總頁數用
$rs=mysql_query(“select count(*) from tb_product”,$conn);
$myrow = mysql_fetch_array($rs);
$numrows=$myrow[0];
//計算總頁數
$pages=intval($numrows/$pagesize);
if ($numrows%$pagesize)
$pages++;
//設置頁數
if (isset($_GET[‘page’])){
$page=intval($_GET[‘page’]);
}
else{
//設置為第一頁
$page=1;
}
//計算記錄偏移量
$offset=$pagesize*($page – 1);
//讀取指定記錄數
$rs=mysql_query(“select * from myTable order by id desc limit $offset,$pagesize”,$conn);
if ($myrow = mysql_fetch_array($rs))
{
$i=0;
?>
<table border=”0″ width=”80%”>
<tr>
<td width=”50%” bgcolor=”#E0E0E0″>
<p align=”center”>標題</td>
<td width=”50%” bgcolor=”#E0E0E0″>
<p align=”center”>發布時間</td>
</tr>
<?php
do {
$i++;
?>
<tr>
<td width=”50%”><?=$myrow[“news_title”]?></td>
<td width=”50%”><?=$myrow[“news_cont”]?></td>
</tr>
<?php
}
while ($myrow = mysql_fetch_array($rs));
echo “</table>”;
}
echo “<div align=’center’>共有”.$pages.”頁(“.$page.”/”.$pages.”)”;
for ($i=1;$i< $page;$i++)
echo “<a href=’fenye.php?page=”.$i.”‘>[“.$i .”]</a> “;
echo “[“.$page.”]”;
for ($i=$page+1;$i<=$pages;$i++)
echo “<a href=’fenye.php?page=”.$i.”‘>[“.$i .”]</a> “;
echo “</div>”;
?>
</body>
</html>
五、總結
本例代碼在windows2000 server+php4.4.0+mysql5.0.16上運行正常。該示例顯示的分頁格式是[1][2][3]…這樣形式。假如想顯示成「首頁 上一頁 下一頁 尾頁」這樣形式,請加入以下代碼:
$first=1;
$prev=$page-1;
$next=$page+1;
$last=$pages;
if ($page > 1)
{
echo “<a href=’fenye.php?page=”.$first.”‘>首頁</a> “;
echo “<a href=’fenye.php?page=”.$prev.”‘>上一頁</a> “;
}
if ($page < $pages)
{
echo “<a href=’fenye.php?page=”.$next.”‘>下一頁</a>
echo “<a href=’fenye.php?page=”.$last.”‘>尾頁</a> “;
}
其實,寫分頁顯示代碼是很簡單的,只要掌握了它的工作原理。希望這篇文章能夠帶給那些需要這方面程序web程序員的幫助。
求php分頁代碼
////////////////////////////////分頁/////////////////////////////
$pageListNum=20;//每頁顯示10條
$totalPage=0;//總頁數
$page=isset($page)?(int)$page:1;//當前頁
$start=($page-1)*$pageListNum;//起始編號
$totalPage=ceil($pageNum/$pageListNum);
require_once(WEB_CLASS.’/page_class.php’);
$page=new PageClass($page,$totalPage);
$showpage=$page-showPage();
echo $showpage;
///////////////page_class.php////////////////////////
?php
header(“Content-Type:text/html;charset=utf8”);
/**
* 分頁類
* URL有多個參數也能分頁,還能自定義分頁樣式
* php=5.0
* @version 0.1.1
* @copyright 2006-2010
* @package class
*/
class PageClass{
private $url;
private $cpage;
private $totalPage;
private $tpl;
/**
* PageClass的構造函數
* 模板說明:{index}表示首頁 {pagelist}鏈接列表 {option}下拉列表框 {next}下一頁 {pre}上一頁 {cur}當前頁 {index=首頁}表示首頁的鏈接文字為首頁,即=號後為鏈接文字,不過這對{pagelist}{option}無效
* @param string $cpage 當前頁
* @param string $tatolPage 總頁數
* @param string $tpl 模板.
* @param string $url 要分頁的url 默認為當前頁
* @return PageClass
*/
function __construct($cpage,$totalPage,$tpl=”,$url=”){
$this-cpage=$cpage;
$this-totalPage=$totalPage;
if(strlen($tpl)==0){
$this-tpl=”{cur=當前頁}{index=首頁} {pre=上一頁} {next=下一頁} {end=最後頁} {option}”; //中文分頁
}else{
$this-tpl=$tpl;
}
if(strlen($url)==0){
$this-url=$_SERVER[‘SERVER_NAME’].$_SERVER[“REQUEST_URI”];
}else{
$this-url=$url;
}
}
/**
* 函數showPage,返回生成的分頁HTML
* @return string
*/
function showPage(){
//顯示分頁
$urlOption=array();//url的後綴如:?page=1typeid=1
$parse_url=parse_url($this-url);
$urlMain=’http://’.$parse_url[‘path’];
if($parse_url[‘query’]){
//url有參數
$urlArr=split(”,$parse_url[‘query’]);
if(is_array($urlArr)){
foreach($urlArr as $key=$value){
$c=split(‘=’,$value);
if($c[0]==page){
}else{
array_push($urlOption,$c[0].’=’.$c[1]);
}
}
}
}else{
//url沒有參數
//if($this-cpage$this-totalPage){
// array_push($urlOption,”page=2″);
//}
}
if(is_array($urlOption)){
$urlOptionStr_t=implode(”,$urlOption);
}
if(strlen($urlOptionStr_t)0){
$urlOptionStr.=”.$urlOptionStr_t;
}
$tplcontent=$this-tpl;//分頁模板
$showPage=$tplcontent;
//首頁
if (preg_match_all(‘/\{index=([^}]*+)\}/’, $tplcontent, $matches)){
$t_tpl=$matches[0][0]; //模板內容
$t_word=$matches[1][0]; //分頁欄位
$indexStr=’a href=”‘.$urlMain.’?page=1′.$urlOptionStr.'”‘.$t_word.’/a’;
$showPage=str_replace($t_tpl,$indexStr,$showPage);
}
//當前頁
if (preg_match_all(‘/\{cur=([^}]*+)\}/’, $tplcontent, $matches)){
$t_tpl=$matches[0][0];
$t_word=$matches[1][0];
$curStr=$t_word.$this-cpage.’/’.$this-totalPage;
$showPage=str_replace($t_tpl,$curStr,$showPage);
}
//末頁
if (preg_match_all(‘/\{end=([^}]*+)\}/’, $tplcontent, $matches)){
$t_tpl=$matches[0][0];
$t_word=$matches[1][0];
$endPage=’a href=”‘.$urlMain.’?page=’.$this-totalPage.$urlOptionStr.'”‘.$t_word.’/a’;
$showPage=str_replace($t_tpl,$endPage,$showPage);
}
//上一頁
if (preg_match_all(‘/\{pre=([^}]*+)\}/’, $tplcontent, $matches)){
$t_tpl=$matches[0][0];
$t_word=$matches[1][0];
if($this-cpage1){
$prePage=’a href=”‘.$urlMain.’?page=’.($this-cpage-1).$urlOptionStr.'”‘.$t_word.’/a’;
}else{
$prePage=$t_word;
}
$showPage=str_replace($t_tpl,$prePage,$showPage);
}
//下一頁
if (preg_match_all(‘/\{next=([^}]*+)\}/’,$tplcontent, $matches)){
$t_tpl=$matches[0][0];
$t_word=$matches[1][0];
if($this-cpage$this-totalPage $this-totalPage1){
$nextPage=’ a href=”‘.$urlMain.’?page=’.($this-cpage+1).$urlOptionStr.'”‘.$t_word.’/a’;
}else{
$nextPage=$t_word;
}
$showPage=str_replace($t_tpl,$nextPage,$showPage);
}
//鏈接列表
if (preg_match(“{pagelist}”,$tplcontent)){
for($i=1;$i$this-totalPage+1;$i++){
$linkPage.=’ a href=”‘.$urlMain.’?page=’.$i.$urlOptionStr.'”‘.$i.’/a’;
}
$showPage=str_replace(‘{pagelist}’,$linkPage,$showPage);
}
//下拉框分頁
if (preg_match(“{option}”,$tplcontent)){
$optionPage=’select onchange=”javascript:window.location=’.”‘”.$urlMain.”?page=’+this.options[this.selectedIndex].value+”.”‘$urlOptionStr'”.’;”‘;
for($i=1;$i$this-totalPage+1;$i++){
if($i==$this-cpage){
$optionPage.=”option selected=’selected’ value=’$i’第”.$i.”頁/option\n”;
}else{
$optionPage.=”option value=’$i’第”.$i.”頁/option\n”;
}
}
$optionPage.=’/select’;
$showPage=str_replace(‘{option}’,$optionPage,$showPage);
}
return $showPage;
}
}
?
php分頁代碼
?php
/**
* @author SEPH
* @desc pageft
* @date 2009-4-20
*/
//為了避免重複包含文件而造成錯誤,加了判斷函數是否存在的條件:
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;
/*if(!$page) $page=1*/;
if(@$_GET[‘page’])
$page = intval($_GET[‘page’]);
else
$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 條記錄BR”;
//如果只有一頁則跳出函數:
if($lastpg=1) return false;
$pagenav.=” a href=’$url=1′ target=_self首頁/a “;
if($prepg) $pagenav.=” a href=’$url=$prepg’ target=_self前頁/a “; else $pagenav.=” 前頁 “;
if($nextpg) $pagenav.=” a href=’$url=$nextpg’ target=_self後頁/a “; else $pagenav.=” 後頁 “;
$pagenav.=” a href=’$url=$lastpg’ target=_self尾頁/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 頁”;
}
}/*沒有用Get傳值*/
?
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/249343.html