这种分页怎么来做 没人晓的吗?跟http://www.isso.com.cn/readarticle/24/24037.asp 一样的效果 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 //------------------------>开始构建分页显示<------------------------------// 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"; --------------------------------------------------------------- function pageview($total_row,$perpage,$curpage,$page_name,$para) { //[总行数]转换为[总页数] $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>"; } } --------------------------------------------------------------- 思路.先统计你要显示的记录个数.然后确认你要一页显示多少条. 然后用sql中的limit 控制输出的记录条数. 点下一页时.limit变改就可以了.给你一个类.不想自己写的话. <? //【警告】:未经许可请勿随便修改 //------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------ // // 【文件名】: 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) 这种分页在信息发布时以交互方式完成,大多asp整站系统都提供。改写成php的也非难事。前些天我曾发过此类代码,你可找一下 smarty好像有一个行的计算,用这个是不是好一点。具体的判断还是要好好想想,这时我的一点意见。 一个笨办法==========在录入的时候加上一个分页的标识符(如‘&&’);输出的时候用explode分割; 讲一下原理吧,页内分页有好多办法,我比较习惯于用php来做,也有用js来做的。我只讲php的办法:假设置有一篇文章有5000字,设:$total = 5000;现在每页要显示2000字,设:$perpage = 2000;那就应分3页来显示,计算公式:$pagenum = ceil(5000/2000);知道了要分3页,然后就应该是进行切分文章。切分的依据应当是get到的分页标记如:page。因为一个新的页面的开始就是$begin = ($_GET['page']-1)*$perpage,用substr或中文字符截取函数进行截取,起始位置为$begin,截取长度为2000,就会得到一个新页面的内容。但是要显示一篇文章时往往大家都是直接的发送一个aid=XXX,然后进行数据库查询并输出,如article.php?aid=13。对于分页的第一页可以直接这样做,但对于第二页以后就不行了,因为缺少一个分页标记。在输出第一页时就要进行如上的操作,并在页脚部分生成一个翻页链接,如:<a href="article.php?aid=13&&page=2">第2页</a>,当点击此链接时便能发送一个分页标记,然后第三页如法炮制。 Missing argument 7 for method() php验证码显示红色叉叉 大家帮我看下这段正则表达式 smarty调用自定义函数的问题。 如何读取类似http://www.abc.com/?123这样的地址栏中的参数123? PHP5扩展MYSQL问题!搞了一个星期还不行!我要崩溃了!救命! 百思不得其解的问题,,请求帮助 在线求助 紧急,求一关于SESSION的问题? php 正则问题 求大师兄们帮忙 请 高手讲解php 程序中的 内存占用 及 释放 。 up者有分 这种动态选定怎么做?
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";
---------------------------------------------------------------
function pageview($total_row,$perpage,$curpage,$page_name,$para)
{
//[总行数]转换为[总页数]
$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>";
}
}
---------------------------------------------------------------
然后用sql中的limit 控制输出的记录条数.
点下一页时.limit变改就可以了.给你一个类.不想自己写的话.
<?
//【警告】:未经许可请勿随便修改
//------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------
//
// 【文件名】: 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)
前些天我曾发过此类代码,你可找一下
==========
在录入的时候加上一个分页的标识符(如‘&&’);
输出的时候用explode分割;
现在每页要显示2000字,设:$perpage = 2000;
那就应分3页来显示,计算公式:$pagenum = ceil(5000/2000);
知道了要分3页,然后就应该是进行切分文章。切分的依据应当是get到的分页标记如:page。
因为一个新的页面的开始就是$begin = ($_GET['page']-1)*$perpage,用substr或中文字符截取函数进行截取,起始位置为$begin,截取长度为2000,就会得到一个新页面的内容。
但是要显示一篇文章时往往大家都是直接的发送一个aid=XXX,然后进行数据库查询并输出,如article.php?aid=13。对于分页的第一页可以直接这样做,但对于第二页以后就不行了,因为缺少一个分页标记。
在输出第一页时就要进行如上的操作,并在页脚部分生成一个翻页链接,如:<a href="article.php?aid=13&&page=2">第2页</a>,当点击此链接时便能发送一个分页标记,然后第三页如法炮制。