求:PHP文章分页原理及实用代码?

fxs_2008 2008-11-02 08:28:55
将一篇文章分页并生成静态,用什么策略?我看分页时有的用a.html ,a-1.html,a-2.html 的
也有直接用新的数字的,如果新浪的文章分页:a.html ,b.html?
哪种好?


另,哪位有简单的PHP文章分页代码给一个?
...全文
2167 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
我爱大萝卜 2010-07-11
  • 打赏
  • 举报
回复
我想看看2楼和4楼的代码
zwjzxh520 2009-09-29
  • 打赏
  • 举报
回复
我想看看2楼和4楼的代码
  • 打赏
  • 举报
回复
	/**
* 翻页函数
*
* @param int $num 总纪录数
* @param int $perpage 每页大小
* @param int $curpage 当前页面
* @param string $mpurl url
* @return string 类似于: <div class="page">***</div>
*/
function page($num, $perpage, $curpage, $mpurl) {
$multipage = '';
$mpurl .= strpos($mpurl, '?') ? '&' : '?';
if($num > $perpage) {
$page = 10;
$offset = 2;

$pages = @ceil($num / $perpage);

if($page > $pages) {
$from = 1;
$to = $pages;
} else {
$from = $curpage - $offset;
$to = $from + $page - 1;
if($from < 1) {
$to = $curpage + 1 - $from;
$from = 1;
if($to - $from < $page) {
$to = $page;
}
} elseif($to > $pages) {
$from = $pages - $page + 1;
$to = $pages;
}
}

$multipage = ($curpage - $offset > 1 && $pages > $page ? '<a href="'.$mpurl.'page=1" class="first"'.$ajaxtarget.'>1 ...</a>' : '').
($curpage > 1 && !$simple ? '<a href="'.$mpurl.'page='.($curpage - 1).'" class="prev"'.$ajaxtarget.'>‹‹</a>' : '');
for($i = $from; $i <= $to; $i++) {
$multipage .= $i == $curpage ? '<strong>'.$i.'</strong>' :
'<a href="'.$mpurl.'page='.$i.($ajaxtarget && $i == $pages && $autogoto ? '#' : '').'"'.$ajaxtarget.'>'.$i.'</a>';
}

$multipage .= ($curpage < $pages && !$simple ? '<a href="'.$mpurl.'page='.($curpage + 1).'" class="next"'.$ajaxtarget.'>››</a>' : '').
($to < $pages ? '<a href="'.$mpurl.'page='.$pages.'" class="last"'.$ajaxtarget.'>... '.$realpages.'</a>' : '').
(!$simple && $pages > $page && !$ajaxtarget ? '<kbd><input type="text" name="custompage" size="3" onkeydown="if(event.keyCode==13) {window.location=\''.$mpurl.'page=\'+this.value; return false;}" /></kbd>' : '');

$multipage = $multipage ? '<div class="pages">'.(!$simple ? '<em> '.$num.' </em>' : '').$multipage.'</div>' : '';
}
return $multipage;
}
  • 打赏
  • 举报
回复
/**
* 翻页函数
*
* @param int $num 总纪录数
* @param int $perpage 每页大小
* @param int $curpage 当前页面
* @param string $mpurl url
* @return string 类似于: <div class="page">***</div>
*/
function page($num, $perpage, $curpage, $mpurl) {
$multipage = '';
$mpurl .= strpos($mpurl, '?') ? '&' : '?';
if($num > $perpage) {
$page = 10;
$offset = 2;

$pages = @ceil($num / $perpage);

if($page > $pages) {
$from = 1;
$to = $pages;
} else {
$from = $curpage - $offset;
$to = $from + $page - 1;
if($from < 1) {
$to = $curpage + 1 - $from;
$from = 1;
if($to - $from < $page) {
$to = $page;
}
} elseif($to > $pages) {
$from = $pages - $page + 1;
$to = $pages;
}
}

$multipage = ($curpage - $offset > 1 && $pages > $page ? '<a href="'.$mpurl.'page=1" class="first"'.$ajaxtarget.'>1 ...</a>' : '').
($curpage > 1 && !$simple ? '<a href="'.$mpurl.'page='.($curpage - 1).'" class="prev"'.$ajaxtarget.'>‹‹</a>' : '');
for($i = $from; $i <= $to; $i++) {
$multipage .= $i == $curpage ? '<strong>'.$i.'</strong>' :
'<a href="'.$mpurl.'page='.$i.($ajaxtarget && $i == $pages && $autogoto ? '#' : '').'"'.$ajaxtarget.'>'.$i.'</a>';
}

$multipage .= ($curpage < $pages && !$simple ? '<a href="'.$mpurl.'page='.($curpage + 1).'" class="next"'.$ajaxtarget.'>››</a>' : '').
($to < $pages ? '<a href="'.$mpurl.'page='.$pages.'" class="last"'.$ajaxtarget.'>... '.$realpages.'</a>' : '').
(!$simple && $pages > $page && !$ajaxtarget ? '<kbd><input type="text" name="custompage" size="3" onkeydown="if(event.keyCode==13) {window.location=\''.$mpurl.'page=\'+this.value; return false;}" /></kbd>' : '');

$multipage = $multipage ? '<div class="pages">'.(!$simple ? '<em> '.$num.' </em>' : '').$multipage.'</div>' : '';
}
return $multipage;
}
fxs_2008 2008-12-23
  • 打赏
  • 举报
回复
2楼4楼的兄弟的分页代码很好,全部使用,虽然与我要求不一致,仍十分感谢!
cyxin2121921 2008-12-01
  • 打赏
  • 举报
回复
mark
jim8590251 2008-11-30
  • 打赏
  • 举报
回复

echo $pagenav;
海诗美妆 2008-11-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jakey9826 的回复:]
对于单篇文章静态分页.
1 如何分页
一种是动态分页. 根据页面字数,自动分成几页. 不用预处理.缺点是,因为文章有好多html代码,以及一些内容比较紧凑的内容,如果智能处理,这是一个需要研究的地方.
第二种,在添加文章的时候,自动插入分页符,生成文章时根据分页符生成静态页面.缺点是需要人为控制.优点是人的智能取代机器的智能.使分页更为合理.

2 分页命名,以及保存.
保存目录,可以根据时间串来存,可以根据…
[/Quote]

1.基本就是在正文中加入分页标签
2.数据库中以分页形势保存
luoy3551 2008-11-04
  • 打赏
  • 举报
回复
函数:
function fpage($row_num,$pagesize,$page,$url){
$page_count=$row_num%$pagesize?intval($row_num/$pagesize)+1:intval($row_num/$pagesize);
if ($page_count == 1)
{
$page_string = "第一页|上一页|下一页|尾页";
}
else
{
if ($page == 1)
{
$page_string = "<a href=".$url."?page=1>第一页</a>|上一页|<a href=".$url."?page=".($page+1).">下一页</a>|<a href=".$url."?
page=".$page_count.">尾页</a>";
}
if (($page > 1) and ($page < $page_count ))
{
$page_string = "<a href=".$url."?page=1>第一页</a>|<a href=".$url."?page=".($page-1).">上一页</a>|<a href=".$url."?page=".
($page+1).">下一页</a>|<a href=".$url."?page=".$page_count.">尾页</a>";
}
if ($page == $page_count)
{
$page_string = "<a href=".$url."?page=1>第一页</a>|<a href=".$url."?page=".($page-1).">上一页</a>|下一页|<a href=".$url."?
page=".$page_count.">尾页</a>";
}
}
$page_str=$page_string.(",".$page."/".$page_count."页");
echo "<br><p align=center>".$page_str."</p>";
}

调用代码断:
$rs=$db->query("select * from content");
$total_num=$rs->num_rows;

$page_num=10;
if( isset($_GET['page']) )
{
$page = intval( $_GET['page'] );
}
else
{
$page = 1;
}
$url='index.php';
fpage($total_num,$page_num,$page,$url);

echo '<table border=1>';
$sql="select * from content order by id desc limit ".($page-1)*$page_num.",".$page_num;
$rs=$db->query($sql);
$i=($page-1)*$page_num+1;

while($row = $rs->fetch_assoc()){
echo "<tr><td>".$i++."</td><td>".$row['name']."</td><td>".$row['contents']."</td></tr>";
}
echo '</table>';
jayboy115519889 2008-11-02
  • 打赏
  • 举报
回复
discuz的分页代码,写的不错,一直在用,拿去吧
function page($page_num,$cur_page,$per_group,$base_url){  //分页函数参数列表(有多少页,当前页,每页多少个 ,链接地址)

$base_url .= strpos($base_url, '?') ? '&' : '?';

$page_val = "";

if ($page_num < 1) {
return $page_val;
} elseif($page_num == 1) {
return $page_val = 1;
}

$group_ok = !(($page_num-1)%($per_group-1));

//计算一共有多少组
if($group_ok) {
$group_num = ($page_num-1)/($per_group-1);
} else {
$group_num = ceil(($page_num-1)/($per_group-1));
}

//判断当前页是否为一组的最后一个
$is_last_page = !(($cur_page-1)%($per_group-1));

//计算当前在的组数
if($is_last_page) {
$cur_group = ($cur_page-1)/($per_group-1) + 1;
} else {
$cur_group = ceil(($cur_page-1)/($per_group-1));
}

//计算显示的起始页
$from = ($cur_group - 1) * ($per_group-1) + 1;
$from = $cur_group <= 1 ? 1 :$from;
$to = $from + $per_group;
$to = $to > $page_num ? $page_num + 1 : $to;

for($a = $from; $a < $to; $a++){
if( $a != $cur_page) {
$page_val .= '<a href ='.$base_url.'page='.$a.'>'.$a.'</a>';
} else {
$page_val .= $a;
}
}

//上一页下一页首页尾页
$next=$cur_page+1;
$prev=$cur_page-1;
if ($cur_page!=$page_num) {
$page_val.='<a href ='.$base_url.'page='.$next.'>'.'下一页'.'</a>';
$page_val .= '<a href ='.$base_url.'page='.$page_num.'>'.'>>'.'</a>'; //尾页
}
if ($cur_page!=1) {
$page_val = '<a href ='.$base_url.'page='.$prev.'>'.'上一页'.'</a>'.$page_val;
$page_val = '<a href ='.$base_url.'page=1>'.'<<'.'</a>'.$page_val; //首页
}

return $page_val;
}
程序猿之殇 2008-11-02
  • 打赏
  • 举报
回复
对于单篇文章静态分页.
1 如何分页
一种是动态分页. 根据页面字数,自动分成几页. 不用预处理.缺点是,因为文章有好多html代码,以及一些内容比较紧凑的内容,如果智能处理,这是一个需要研究的地方.
第二种,在添加文章的时候,自动插入分页符,生成文章时根据分页符生成静态页面.缺点是需要人为控制.优点是人的智能取代机器的智能.使分页更为合理.

2 分页命名,以及保存.
保存目录,可以根据时间串来存,可以根据分类串保存,也可以时间串加分类串保存.
分页文章命名.文章命名最好包括分类,时间以及一些文章对应的特殊的数据,为了安全,可以用md5加密.
对于文章的内部页面,可以加_1,_2这样,我觉得用数字更好些.

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧