新聞中心
php分頁代碼 怎么寫
Web開發(fā)是今后分布式程式開發(fā)的主流,通常的web開發(fā)都要涉及到與數(shù)據(jù)庫打交道,客戶端從服務(wù)器端讀取通常都是以分頁的形式來顯示,一頁一頁的閱讀起來既方便又美觀。所以說寫分頁程序是web開發(fā)的一個重要組成部分,在這里,我們共同來研究分頁程序的編寫。
創(chuàng)新互聯(lián)長期為上1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為察哈爾右翼中旗企業(yè)提供專業(yè)的成都網(wǎng)站制作、網(wǎng)站建設(shè),察哈爾右翼中旗網(wǎng)站改版等技術(shù)服務(wù)。擁有10多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
一、分頁程序的原理
分頁程序有兩個非常重要的參數(shù):每頁顯示幾條記錄($pagesize)和當(dāng)前是第幾頁($page)。有了這兩個參數(shù)就可以很方便的寫出分頁程序,我們以MySql數(shù)據(jù)庫作為數(shù)據(jù)源,在mysql里如果要想取出表內(nèi)某段特定內(nèi)容可以使用的 T-SQL語句:select * from table limit offset,rows來實(shí)現(xiàn)。這里的offset是記錄偏移量,它的計(jì)算方法是offset=$pagesize*($page-1),rows是要顯示的記錄條數(shù),這里就是$page。也就是說select * from table limit 10,10這條語句的意思是取出表里從第11條記錄開始的20條記錄。
二、主要代碼解析
$pagesize=10; //設(shè)置每一頁顯示的記錄數(shù)
$conn=mysql_connect("localhost","root",""); //連接數(shù)據(jù)庫
$rs=mysql_query("select count(*) from tb_product",$conn); //取得記錄總數(shù)$rs
$myrow = mysql_fetch_array($rs);
$numrows=$myrow[0];
//計(jì)算總頁數(shù)
$pages=intval($numrows/$pagesize);
//判斷頁數(shù)設(shè)置
if (isset($_GET['page'])){
$page=intval($_GET['page']);
}
else{
$page=1; //否則,設(shè)置為第一頁
}
三、創(chuàng)建用例用表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","");
//設(shè)定每一頁顯示的記錄數(shù)
$pagesize=1;
mysql_select_db("mydata",$conn);
//取得記錄總數(shù)$rs,計(jì)算總頁數(shù)用
$rs=mysql_query("select count(*) from tb_product",$conn);
$myrow = mysql_fetch_array($rs);
$numrows=$myrow[0];
//計(jì)算總頁數(shù)
$pages=intval($numrows/$pagesize);
if ($numrows%$pagesize)
$pages++;
//設(shè)置頁數(shù)
if (isset($_GET['page'])){
$page=intval($_GET['page']);
}
else{
//設(shè)置為第一頁
$page=1;
}
//計(jì)算記錄偏移量
$offset=$pagesize*($page - 1);
//讀取指定記錄數(shù)
$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">標(biāo)題</td>
<td width="50%" bgcolor="#E0E0E0">
<p align="center">發(fā)布時(shí)間</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>
五、總結(jié)
本例代碼在windows2000 server+php4.4.0+mysql5.0.16上運(yùn)行正常。該示例顯示的分頁格式是[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> ";
}
其實(shí),寫分頁顯示代碼是很簡單的,只要掌握了它的工作原理。希望這篇文章能夠帶給那些需要這方面程序web程序員的幫助。
PHP 分頁代碼
我給你一個類吧,很簡單的,
?php
//分頁函數(shù)
class pg{
function genpage($sql,$page_size=2)
{
global $prepage,$nextpage,$pages,$sums; //out param
$page = $_GET["page"];
$eachpage = $page_size;
$pagesql = strstr($sql," from ");
$pagesql = "select count(*) as ids ".$pagesql;
$result = mysql_query($pagesql) or die(mysql_error());
if($rs = mysql_fetch_array($result)) $sums = $rs[0];
$pages = ceil(($sums-0.5)/$eachpage)-1;
$pages = $pages=0?$pages:0;
$prepage = ($page0)?$page-1:0;
$nextpage = ($page$pages)?$page+1:$pages;
$startpos = $page*$eachpage;
$sql .=" limit $startpos,$eachpage ";
}
function showpage()
{
global $page,$pages,$prepage,$nextpage,$queryString;
$queryString=$_SERVER['QUERY_STRING'];
if(preg_match("/page/",$queryString)){
$queryString=strstr($queryString,"");
}else {
$queryString="".$queryString;
}
$shownum =10/2;
$startpage = ($page=$shownum)?$page-$shownum:0;
$endpage = ($page+$shownum=$pages)?$page+$shownum:$pages;
$xs="";
$xs.="共".($pages+1)."頁: ";
if($page0)$xs.= "a href=$PHP_SELF?page=0$queryString首頁/a";
if($startpage0)
$xs.=" ... ba href=$PHP_SELF?page=".($page-$shownum*2)."$queryString?/a/b";
for($i=$startpage;$i=$endpage;$i++)
{
if($i==$page) $xs.= " b[".($i+1)."]/b ";
else $xs.= " a href=$PHP_SELF?page=$i$queryString".($i+1)."/a ";
}
if($endpage$pages)
$xs.= "ba href=$PHP_SELF?page=".($page+$shownum*2)."$queryString/a/b ... ";
if($page$pages)
$xs.= "a href=$PHP_SELF?page=$pages$queryString尾頁/a";
return $xs;
}
}
?
用法很簡單的,如果不會,給我留言就可以了,或者qq:654118862
PHP顯示很多數(shù)據(jù)庫信息,如何自動分頁呢?代碼
PHP代碼如下:
/*
Author:默默
Date :2006-12-03
*/
$page=isset($_GET['page'])?intval($_GET['page']):1; //這句就是獲取page=18中的page的值,假如不存在page,那么頁數(shù)就是1。
$num=10; //每頁顯示10條數(shù)據(jù)
$db=mysql_connect("host","name","pass"); //創(chuàng)建數(shù)據(jù)庫連接
$select=mysql_select_db("db",$db); //選擇要操作的數(shù)據(jù)庫
/*
首先咱們要獲取數(shù)據(jù)庫中到底有多少數(shù)據(jù),才能判斷具體要分多少頁,具體的公式就是
總數(shù)據(jù)數(shù)除以每頁顯示的條數(shù),有余進(jìn)一。
也就是說10/3=3.3333=4 有余數(shù)就要進(jìn)一。
*/
$total=mysql_num_rows(mysql_query("select id from table")); //查詢數(shù)據(jù)的總數(shù),id是數(shù)據(jù)庫中的一個自動賦值的字段
$pagenum=ceil($total/$num); //獲得總頁數(shù)
//假如傳入的頁數(shù)參數(shù)大于總頁數(shù),則顯示錯誤信息
If($page$pagenum || $page == 0){
Echo "Error : Can Not Found The page .";
Exit;
}
$offset=($page-1)*$num; //獲取limit的第一個參數(shù)的值,假如第一頁則為(1-1)*10=0,第二頁為(2-1)*10=10。
$info=mysql_query("select name from table limit $offset,$num"); //獲取相應(yīng)頁數(shù)所需要顯示的數(shù)據(jù),name是數(shù)據(jù)里的一個字段
While($it=mysql_fetch_array($info)){
Echo $it['name']."
";
} //顯示數(shù)據(jù)
For($i=1;$i=$pagenum;$i++){
$show=($i!=$page)?"$i":"$i";
Echo $show." ";
}
/*顯示分頁信息,假如是當(dāng)頁則顯示粗體的數(shù)字,其余的頁數(shù)則為超連接,假如當(dāng)前為第三頁則顯示如下
1 2 3 4 5 6
*/
?
php分頁代碼
?php
/**
* @author SEPH
* @desc pageft
* @date 2009-4-20
*/
//為了避免重復(fù)包含文件而造成錯誤,加了判斷函數(shù)是否存在的條件:
if(!@function_exists(pageft)){
//定義函數(shù)pageft(),三個參數(shù)的含義為:
//$totle:信息總數(shù);
//$displaypg:每頁顯示信息數(shù),這里設(shè)置為默認(rèn)是20;
//$url:分頁導(dǎo)航中的鏈接,除了加入不同的查詢信息“page”外的部分都與這個URL相同。
// 默認(rèn)值本該設(shè)為本頁URL(即$_SERVER["REQUEST_URI"]),但設(shè)置默認(rèn)值的右邊只能為常量,所以該默認(rèn)值設(shè)為空字符串,在函數(shù)內(nèi)部再設(shè)置為本頁URL。
function pageft($totle,$displaypg=20,$url=''){
//定義幾個全局變量:
//$page:當(dāng)前頁碼;
//$firstcount:(數(shù)據(jù)庫)查詢的起始項(xiàng);
//$pagenav:頁面導(dǎo)航條代碼,函數(shù)內(nèi)部并沒有將它輸出;
//$_SERVER:讀取本頁URL“$_SERVER["REQUEST_URI"]”所必須。
global $page,$firstcount,$pagenav,$_SERVER;
//為使函數(shù)外部可以訪問這里的“$displaypg”,將它也設(shè)為全局變量。注意一個變量重新定義為全局變量后,原值被覆蓋,所以這里給它重新賦值。
$GLOBALS["displaypg"]=$displaypg;
/*if(!$page) $page=1*/;
if(@$_GET['page'])
$page = intval($_GET['page']);
else
$page = 1;
//如果$url使用默認(rèn),即空值,則賦值為本頁URL:
if(!$url){ $url=$_SERVER["REQUEST_URI"];}
//URL分析:
$parse_url=parse_url($url);
$url_query=@$parse_url["query"]; //單獨(dú)取出URL的查詢字串
if($url_query){
//因?yàn)閁RL中可能包含了頁碼信息,我們要把它去掉,以便加入新的頁碼信息。
//這里用到了正則表達(dá)式,請參考“PHP中的正規(guī)表達(dá)式”()
$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";
}
//頁碼計(jì)算:
$lastpg=ceil($totle/$displaypg); //最后頁,也是總頁數(shù)
$page=min($lastpg,$page);
$prepg=$page-1; //上一頁
$nextpg=($page==$lastpg ? 0 : $page+1); //下一頁
$firstcount=($page-1)*$displaypg;
//開始分頁導(dǎo)航條代碼:
$pagenav="顯示第 B".($totle?($firstcount+1):0)."/B-B".min($firstcount+$displaypg,$totle)."/B 條記錄,共 $totle 條記錄BR";
//如果只有一頁則跳出函數(shù):
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 ";
//下拉跳轉(zhuǎn)列表,循環(huán)列出所有頁碼:
$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傳值*/
?
PHP分頁顯示最簡單代碼
簡單寫法:
?php
include
("./config/conn.php");
$sql="select
*
from
ly
order
by
id
desc";
$result=mysql_query($sql);
$num=mysql_num_rows($result);
//統(tǒng)計(jì)行數(shù)
$pages=ceil($num/5);
//總頁數(shù)
$page=$_GET['page'];
//獲得page,如果沒有設(shè)置或者page=0,把$page=1;
if(!isset($page)
||
$page==0)
$page=1;
$start=($page-1)*5;
$sql="select
*
from
ly
order
by
id
desc
limit
$start,5";
mysql_query($sql);
if($sumpage!=0)
{
if($page!=1)
{
echo
"a
href=$PHP_SELF?page=1首頁/a\t";
}else
{
echo
"首頁\t";
}
if($page1)
{
echo
"a
href=$PHP_SELF?page=".($page-1)."上一頁/a\t";
}else
{
echo
"上一頁\t";
}
if($page$pages)
{
echo
"a
href=$PHP_SELF?page=".($page+1)."下一頁/a\t";
}else
{
echo
"下一頁\t";
}
if($page!=$pages)
{
echo
"a
href=$PHP_SELF?page=".$pages."尾頁/a\t";
}else
{
echo
"尾頁\t";
}
}else
{
echo
"目前沒有記錄!!";
}
當(dāng)前文章:php數(shù)據(jù)分頁源代碼 php實(shí)現(xiàn)分頁
本文URL:http://www.ef60e0e.cn/article/dodsgds.html