//------------------------>开始构建分页显示<------------------------------//if($page!=""){
$page=$page;
}
else{
$page=0;
}
$total=$i;//-------------->这个是取出所有记录的总数参数
$topid=0;//显示留言传递参数
$pagesize=20;
$start=$page*$pagesize;
$end=$start+$pagesize;
if($end>$i) $end=$i;
$totalpage=$i/$pagesize;
$info=" 共有<font color=red>" . $total . "</font> 张贴子<font color=red>" . ($page+1) . "</font>/" . ceil($totalpage) . "页 ";
if($page>0) $pagestr="<a href=".$PHP_SELF."?page=" .($page-1)."&bord_id=".$bord_id. ">上一页</a>";
$pagestr=$pagestr . " [第 ";
//-------------------------------------判断页码------------------
for($i=0;$i<$totalpage;$i++){
if($i!=$page){
$pagestr=$pagestr . " <a href=".$PHP_SELF."?page=" . $i ."&bord_id=".$bord_id. ">" . ($i+1) . "</a> ";
}
else{
$pagestr=$pagestr . " " . ($i+1) . " ";
}
}
$pagestr=$pagestr . "页]";
if($page<$totalpage-1) $pagestr=$pagestr . "<a href=".$PHP_SELF."?page=" . ($page+1) ."&bord_id=".$bord_id.">下一页</a>\n";
$page=$page;
}
else{
$page=0;
}
$total=$i;//-------------->这个是取出所有记录的总数参数
$topid=0;//显示留言传递参数
$pagesize=20;
$start=$page*$pagesize;
$end=$start+$pagesize;
if($end>$i) $end=$i;
$totalpage=$i/$pagesize;
$info=" 共有<font color=red>" . $total . "</font> 张贴子<font color=red>" . ($page+1) . "</font>/" . ceil($totalpage) . "页 ";
if($page>0) $pagestr="<a href=".$PHP_SELF."?page=" .($page-1)."&bord_id=".$bord_id. ">上一页</a>";
$pagestr=$pagestr . " [第 ";
//-------------------------------------判断页码------------------
for($i=0;$i<$totalpage;$i++){
if($i!=$page){
$pagestr=$pagestr . " <a href=".$PHP_SELF."?page=" . $i ."&bord_id=".$bord_id. ">" . ($i+1) . "</a> ";
}
else{
$pagestr=$pagestr . " " . ($i+1) . " ";
}
}
$pagestr=$pagestr . "页]";
if($page<$totalpage-1) $pagestr=$pagestr . "<a href=".$PHP_SELF."?page=" . ($page+1) ."&bord_id=".$bord_id.">下一页</a>\n";
<form name=form1 action=<? echo $PHP_SELF;?> method=post>
输入页码:<input type=text name=page>
<input type=submit value=go></form>试试,这个没测试,
因为上面的程序那段for($i=0;$i<$totalpage;$i++){
。。
已经把所有的页列出来了,如果要把这个也分页,原理是一样的,自己写一下程序,不要什么都靠别人,那样你永远也不会懂了
这样写好象不行
<select name=paaaa onchange="self.location='<?=$PHP_SELF?>?page='+this.value;">
<?=$pageOption?>
</select>
{
//[总行数]转换为[总页数]
$total_page=floor($total_row/$perpage);
$leavenums=$total_row%$perpage;
if($leavenums<>0) $total_page++; $prev_page=$curpage-1;
$next_page=$curpage+1;
if(strrpos($page_name,'?')) $page_name = $page_name.'&';
else $page_name = $page_name.'?'; if($total_page>1)
{
$lastpage=($total_page-1);
echo $prev_page<0?" ":" <a href=$page_name"."curpage=0$para>第一页</a> <A href=\"".$page_name."curpage=$prev_page$para\">上一页</a>";
echo $next_page>=$total_page?" ":" <a href=\"".$page_name."curpage=$next_page$para\">下一页</a> <a href=".$page_name."curpage=$lastpage$para>最后一页</a>";
echo " 共[<b>$total_page</b>]页";
}
}
/*=================[数字]页码方式显示=================*/
function no_pageview($total_row,$perpage,$curpage,$page_name,$para)
{
$tmpNo=$curpage;
//[总行数]转换为[总页数]
$total_page=floor($total_row/$perpage);
$leavenums=$total_row%$perpage;
if($leavenums<>0) $total_page++; //[总页数]转换为[总块数]
$display_page=10;
$total_block=floor($total_page/$display_page);
$leavepage=$total_page%$display_page;
if($leavepage<>0)
$total_block++;
$total_block=intval($total_block); //[当前页]转换为[当前块]
$current_block=floor($curpage/$display_page);
$current_block=intval($current_block); $prev_block=$current_block-1;
$prev_pages10=$prev_block*$display_page;
$next_block=$current_block+1;
$next_pages10=$next_block*$display_page; if (strrpos($page_name,'?') )
$page_name = $page_name.'&';
else
$page_name = $page_name.'?'; if($total_page>1)
{
if($current_block==($total_block-1)){$cnt=$leavepage;}
else{$cnt=$display_page;}
for($i=0;$i<$cnt;$i++)
{
$curpage=$current_block*$display_page+$i;
$PageNo=$curpage+1;
if ($tmpNo==$curpage)
echo " [<b>$PageNo</b>] ";
else
echo " <a href=".$page_name."curpage=$curpage$para> $PageNo </a>";
}
}
//-----显示[前十页]和[后十页]菜单
if($total_block>1)
{
echo $prev_block<0?" ":" <A href=\"".$page_name."curpage=$prev_pages10$para\">前十页</a>";
echo $next_block>=$total_block?" ":" <a href=\"".$page_name."curpage=$next_pages10$para\">后十页</a>";
}
}
<?
//【警告】:未经许可请勿随便修改
//------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------
//
// 【文件名】: c_mysql_page.inc
// 【作 用】: MySQL分页函数类
// 【作 者】: 天灰
//
// 【最后修改日期】: 2001/07/16[cxx]
// 【变量定义规则】:‘C_’=字符型,‘I_’=整型,‘N_’=数字型,‘L_’=布尔型,‘A_’=数组型
//------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------
// ※c_mysql_page() 构造函数,设置分页初始参数
// ※page_standard() 分页显示函数(标准型)
// ※GetRecordStartEnd() 获得取记录的开始结束位置
// ※getmaxpage() 获得记录集的最大页数
// ※checkpage() 检查当前页数是否在0和最大页数之间
//------------------------------------------------------------------------------------------
class c_mysql_page
{
//------------------------------------------------------------------------------------------
// 变量定义
//------------------------------------------------------------------------------------------
var $I_pagesize = 10; //每页记录数
var $C_width = '90%'; //表格宽度
//------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------
// 函数名:c_mysql_page ($I_pagesize, $c_width)
// 作 用:构造函数,设置分页初始参数
// 参 数:$I_pagesize, $c_width
// 返回值:变量
// 备 注:构造函数随着类的建立而自动执行
//------------------------------------------------------------------------------------------
function c_mysql_page ($I_pagesize=10, $C_width='85%')
{
if (isset($I_pagesize)){$this -> I_pagesize = $I_pagesize;}
if (isset($C_width)){$this -> C_width = $C_width;}
} //------------------------------------------------------------------------------------------
// 函数名:page_standard($I_sumrecord,$C_page,$C_url="self",$C_otherpara="")
// 作 用:分页显示函数(标准型)
// 参 数:$I_sumrecord 记录总数
// $C_url URL
// $C_page URL后的参数
// $C_otherpara URL后的参数2
// $bgcolor 表格的背景颜色
// 返回值:<table>
// 备 注:无
//------------------------------------------------------------------------------------------
function page_standard($I_sumrecord,$C_page,$C_url="self",$C_otherpara="",$bgcolor="")
{
//检查参数
if ((!$I_sumrecord) || (!$C_page)){AlertExit("参数不全!");}
global $PHP_SELF,$$C_page; //全局变量$C_page
//检测$I_pagesize是否合法
if($this -> I_pagesize < 1){AlertExit("请设定每页的记录数!");}
if($I_sumrecord < 1){return false;} //检测总记录数
if($C_url == "self"){$C_url = $PHP_SELF;} //设置URL
$I_page = $$C_page; //重新赋当前页值
$I_maxpage = $this -> getmaxpage($I_sumrecord); //取出总页数
$I_page = $this -> checkPage($I_maxpage,$I_page); //检查当前页号
//显示表
echo "<table align=center width=". $this -> C_width ." bgcolor=". $bgcolor .">";
echo "<tr>";
echo "<td align=left>共<font color=red><b>" . $I_sumrecord. "</b></font>条主题 当前第<font color=red><b>" . $I_page . "/". $I_maxpage. "</b></font>页</td>";
if ($I_maxpage > 1)
{
echo "<td align=right>";
if($I_page > 1 && $I_page < $I_maxpage)
{
echo "<a href= $C_url?$C_page=1&$C_otherpara>首页</a> ";
$pre=$I_page-1;
echo "<a href=$C_url?$C_page=$pre&$C_otherpara>上页</a> ";
$next=$I_page+1;
echo "<a href=$C_url?$C_page=$next&$C_otherpara>下页</a> ";
echo "<a href=$C_url?$C_page=$I_maxpage&$C_otherpara>末页</a> ";
}
elseif($I_page == 1)
{
$next = $I_page+1;
echo "<a href=$C_url?$C_page=$next&$C_otherpara>下页</a> ";
echo "<a href=$C_url?$C_page=$I_maxpage&$C_otherpara>末页</a> ";
}
elseif($I_page == $I_maxpage)
{
echo "<a href=$C_url?$C_page=1&$C_otherpara>首页</a> ";
$pre=$I_page-1;
echo "<a href=$C_url?$C_page=$pre&$C_otherpara>上页</a> ";
}
//显示select
// echo "转到";
// echo "<SELECT style=font-size:9pt NAME=gopage class='ff' OnChange=WindowLocation($C_url,$C_otherpara,$C_page)>";//OnChange=".WindowLocation($C_url,$C_otherpara,$C_page)."
// for($i=1;$i <= $I_maxpage;$i++)
// {
//如$i==$I_page,此选项选中(selected)
// if($i == $I_page){echo "<option value=$i selected>$i </option>";}
// else{echo "<option value=$i>$i </option>";}
// }
// echo "</SELECT>页</td>";
}
echo "</tr>";
echo "</table>";
}
//------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------
// 函数名:GetRecordStartEnd($I_page)
// 作 用:获得取记录的开始结束位置
// 参 数:$I_page 当前页
// 返回值:全局变量$I_rowstart,$I_pagesize
// 备 注:无
//------------------------------------------------------------------------------------------
function GetRecordStartEnd($I_page)
{
global $I_rowstart;
global $I_pagesize;
$I_rowstart = ($I_page-1)*$this -> I_pagesize;
$I_pagesize = $this -> I_pagesize;
}
//------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------
// 函数名:getmaxpage($intRecordNum)
// 作 用:获得记录集的最大页数
// 参 数:$I_sumrecord 记录总数
// 返回值:最大页数$I_maxpage(整型)
// 备 注:无
//------------------------------------------------------------------------------------------
function getmaxpage($I_sumrecord)
{
if (!$I_sumrecord){AlertExit("参数不全!");}//检查参数
$I_maxpage = ceil($I_sumrecord / $this -> I_pagesize);
return $I_maxpage;
}
//------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------
// 函数名:checkpage($I_maxpage,$I_page)
// 作 用:检查当前页数是否在0和最大页数之间
// 参 数:$I_maxpage 最大页数
// $I_page 当前页数
// 返回值:当前页数$I_page(整型)
// 备 注:无
//--------------------------------------------------------------
做数据库分页最重要的在于得到分页时的超链接。 当然,每页的能显示的最大记录可以设置为变量,本文只想起一个抛砖引玉的作用,这个程序还有待于进一步改进,请大家多多提意见。文中head.php 和 foot.php 是一个网页的头部和尾部。其实,说得明白点这里只是一个数学计算的问题。
<?php
include ("head.php");
function connect()
{
$handler=mysql_connect("","user","password");
if(!$handler)
{
$error= "对不起,不能链接到数据库!";
}
else
$result=mysql_select_db(dongzhengfei);
if($result)
return $handler;
}
$handler=connect();
if($handler)
{
$maxrows="12";
if(isset($from))//判定当前是否第一次打开
{
$step=($total-$from>$maxrows)?$maxrows$total-$from);
$query="select * from teacher limit $from,$step";
$result=mysql_query($query);
$num=mysql_num_rows($result);
}
else
{
$query="select * from teacher";
$result=mysql_query($query,$handler);
$num=mysql_num_rows($result);
$total=$num;
$pages=ceil($num/$maxrows);
$step=($num>$maxrows)?$maxrows:$num;
}
if($num==0)
{
echo "当前没有任何老师信息!!!";
}
echo "<p>今天网上注册老师:".$total."</p>";
$i=0;
echo "<table width=\"760\" bgcolor=\"#33cc66\" cellpadding=\"1\"><tr><td align=\"center\" bgcolor=\"#ffffff\" width=\"85\"><p>姓 名</p></td><td bgcolor=\"#ffffff\" align=\"center\" width=\"75\"><p>民族</p></td><td bgcolor=\"#ffffff\" width=\"240\" align=\"center\"><p>辅导科目</p></td><td bgcolor=\"#ffffff\" align=\"center\" width=\"210\"><p>学 校</p></td><td bgcolor=\"#ffffff\" align=\"center\" width=\"150\"><p>专 业</p></td></tr>";//设置表头
while($row=mysql_fetch_array($result)and ($i<$maxrows))
{
echo "<tr>";
$tea_info="<td align=\"center\" bgcolor=\"#ffffff\"><p>".$row["name"]."</p></td>";
$tea_info.="<td align=\"center\" bgcolor=\"#ffffff\"><p>".$row["nation"]."</p></td>";
$tea_info.="<td align=\"center\" bgcolor=\"#ffffff\"><p>".$row["subject"]."</p></td>";
$tea_info.="<td align=\"center\" bgcolor=\"#ffffff\"><p>".$row["school"]."</p></td>";
$tea_info.="<td align=\"center\" bgcolor=\"#ffffff\"><p>".$row["specialty"]."</p></td>";
echo $tea_info. "</tr>";
$i++;
}
echo "</table>";
echo "<p align=\"right\">";
if($pages>1)
{
echo "<a href=\"$php_self?from=0&total=$total&pages=$pages\" target=\"top\">首页</a> ";
}
else
echo "首页 ";
if($from>=$maxrows)
{
echo "<a href=\"$php_self?from=".($from-$maxrows);
echo "&total=$total&pages=$pages\"";
echo "target=\"top\">上一页</a> ";
}
else
echo "上一页 ";
if($from+$maxrows<$total)
{
echo "<a href=\"$php_self?from=".($from+$maxrows);
echo "&total=$total&pages=$pages\"";
echo "target=\"top\">下一页</a> ";
}
else
echo "下一页 ";
if($pages>=2)
{
echo "<a href=\"$php_self?from=";
if($total%$maxrows==0)
echo $total-$maxrows;
else
echo $total-$total%$maxrows;
echo "&total=$total&pages=$pages\"";
echo "target=\"top\">末页</a> ";
}
else
echo "末页 ";
echo "</p>";
include ("foot.php");
}
else
echo "数据库出错!!!"
?>
另注:从数据库中取得的记录,从0开始排号。