php 长文章怎么在显示时实现分页

不按照字符数,按照标识符怎么分页?... 不按照字符数,按照标识符怎么分页? 展开
 我来答
haoqinhu1314
2015-08-26 · TA获得超过364个赞
知道小有建树答主
回答量:358
采纳率:57%
帮助的人:188万
展开全部
有种偷懒的做法。就是文章太长。就是显示一段,隐藏另外段落。

文章在后台发布肯定是通过WEB编辑器进行的,对吧!你可以在编辑器上增加文章分页显示功能。具体的原理是这样的,你在想要分页的地方插入你自己定义的标记符号比如#page#,插入到数据库中的HTML代码中就会有这样的#page#的代码。在前台看的时候,通过程序处理。把文字HTML中有#page#这样的东西。进行下翻译成文章分页即可!有几个#page#就可以判断在当初在后台设置过分几页显示。生成一段JS代码、控制DIV的显示隐藏就可以实现分页效果。
cmoooo
2011-09-13 · TA获得超过3587个赞
知道小有建树答主
回答量:741
采纳率:0%
帮助的人:663万
展开全部
有几种可行性:

1. 你的文章都存在数据库中的一条内吧?如果是这样的话,就没有太大的必要在服务器上将它分页了,(当然,如果你的网站中这样长篇幅的文章数量实在太多,就另当别论,因为太多的文章这么长,会影响网站加载速度,如果是这种,请看第2条) 你可以把这篇文章直接发送给客户端,然后使用javascript分页,这样做有好处,也有弊端,好处是服务器负载会变小,而且用户分页的时候甚至不用刷新。 这种做法是由javascript分辨文章字数长度,如果超过了设定长度,则分页。具体代码不讲,因为比较复杂,你可以百度一下:“js分页原理”

2. 在服务器直接分页,使用PHP,同样按照第一条的计算字符长度的原理,对得到的文章进行分段,然后计算分段的数量后,在网页上显示出分页链接,服务器判断分页数后,决定发送给客户端哪一个分段,也就实现了分页,这样的做法对服务器有一定的负载要求,要注意变量的注销。

3. 这种做法是最理想的,也是最优化的方案:在你上传这篇文章的时候,服务器就对该文章的长度进行了计算,并分条存入数据库,而且在数据库中存入分段信息,也就是说,在数据库中增加一个记录分段的字段,这样,在用户访问网站的时候,不但对服务器、数据库、网络流量这三者都是最小化的,而且,上传的时候进行分段也是由服务器一次性完成数据库的多条录入,方便、快捷、高效、合理。
追问
要使用标识符怎么进行分页呢?
追答
标识符?怎么个标识符?标识符的意义太宽泛了,比如变量是标识符,数据库中用来记录分类的数字也叫标识符,没懂你的意思,你看一下你采用了我上述所说的哪一个方案,然后我再给你讲。

————————
哦,我或许明白你的意思了,你是想在你的文章中,类似word一般,有一个被称为分页符的特殊标识符标志,这是一开始就记录上去的,然后程序来分辨它,一到这里,就分页,是这个意思吧?如果是这样的话,你考虑下第一条和第二条方案,选好后追问,因为这两种分页实现的方式有些不同。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
模友石头4a
2011-09-13 · 超过26用户采纳过TA的回答
知道答主
回答量:83
采纳率:0%
帮助的人:69.5万
展开全部
//----分页开始
$pagenum=15;//每页显示记录数
$num=0;
$total=0;
$page=1;
//判断当前页码
if(empty($_GET['page']) && !$_POST){
$querysql="select * from table"
$query=sqlsrv_query($conn,$querysql);
$result=array();
while($row=sqlsrv_fetch_array($query)){
$result[]=$row;
}
$_SESSION['parfor_total']=$result;
}elseif(!empty($_GET['page'])){
$page=$_GET['page'];
if($page<=0){
$page=1;
}
if(isset($_SESSION['parfor_total'])){
$result=$_SESSION['parfor_total'];
}else{$result=array();
echo "<script>location.href=".$_SERVER['PHP_SELF']."</script>";
}
}

$num=($page-1)*$pagenum;
$arr=array();
if(!empty($result)){
$total=count($result);
for($i=0;$i<$pagenum;$i++){
$n=$num+$i;
if(!empty($result[$n])){
$arr[$i]=$result[$n];
}
}
}
$page_count = ceil($total/$pagenum);
$init=1;
$page_len=10;//每页显示页码数
$max_p=$page_count;
$pages=$page_count;
$page_len = ($page_len%2)?$page_len:$page_len+1;//页码个数
$pageoffset = ($page_len-1)/2;//页码个数左右偏移量

$pkey='<div>';
$pkey.="<span>$page/$pages</span> "; //第几页,共几页
if($page!=1){
$pkey.="<a href=\"".$_SERVER['PHP_SELF']."?page=1\">第一页</a> "; //第一页
$pkey.="<a href=\"".$_SERVER['PHP_SELF']."?page=".($page-1)."\">上一页</a>"; //上一页
}else {
$pkey.="第一页 ";//第一页
$pkey.="上一页"; //上一页
}

if($pages>$page_len){
//如果当前页小于等于左偏移
if($page<=$pageoffset){
$init=1;
$max_p = $page_len;
}else{//如果当前页大于左偏移
//如果当前页码右偏移超出最大分页数
if($page+$pageoffset>=$pages+1){
$init = $pages-$page_len+1;
}else{
//左右偏移都存在时的计算
$init = $page-$pageoffset;
$max_p = $page+$pageoffset;
}
}
}
for($i=$init;$i<=$max_p;$i++){
if($i==$page){
$pkey.=' <span>'.$i.'</span>';
} else {
$pkey.=" <a href=\"".$_SERVER['PHP_SELF']."?page=".$i."\">".$i."</a>";
}
}

if($page!=$pages){
$pkey.=" <a href=\"".$_SERVER['PHP_SELF']."?page=".($page+1)."\">下一页</a> ";
$pkey.="<a href=\"".$_SERVER['PHP_SELF']."?page=".$pages."\">最后一页</a> ";
}else {
$pkey.="下一页 ";
$pkey.="最后一页 ";
}
$pkey.=' 共 '.$total.' 条</div>';
// -------分页结束
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
___李小么
2015-08-17 · 超过42用户采纳过TA的回答
知道小有建树答主
回答量:125
采纳率:0%
帮助的人:83.6万
展开全部
可以在后台编辑文章时候加入个分页标签,这个自己定义(比如#page#),然后前台取文章的时候按这个标签explod,就会得到不同页码的内容
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
foxaobe
2011-09-13 · TA获得超过331个赞
知道小有建树答主
回答量:897
采纳率:0%
帮助的人:614万
展开全部
有种偷懒的做法。就是文章太长。就是显示一段,隐藏另外段落。
追问
文章是要全部显示的,不知道怎么让它分页显示
追答
文章在后台发布肯定是通过WEB编辑器进行的,对吧!你可以在编辑器上增加文章分页显示功能。具体的原理是这样的,你在想要分页的地方插入你自己定义的标记符号比如#page#,插入到数据库中的HTML代码中就会有这样的#page#的代码。在前台看的时候,通过程序处理。把文字HTML中有#page#这样的东西。进行下翻译成文章分页即可!有几个#page#就可以判断在当初在后台设置过分几页显示。生成一段JS代码、控制DIV的显示隐藏就可以实现分页效果。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式