文章内容太长,在php中如何做文章内容分页!
请各位高手给予指点!
谢谢
文章长度截取
http://www.google.com.hk/search?hl=zh-CN&newwindow=1&safe=strict&client=aff-cs-360se&hs=kXs&q=php+%E9%95%BF%E6%96%87%E7%AB%A0+%E5%88%86%E9%A1%B5&meta=&aq=f&aqi=&aql=&oq=&gs_rfai=
学习一下
可以指定一个分页规则,比如 按照多少行分页,或是按照一定长度分页;
通常是手动来分页,例如用
标签来分页。
再用正则把内容切割一下。
分页无非两种.
一种是人为为页,就是在录入的时候,插入分页标签,读取的时候根据分页标签分页.
优点:分页比较规范.
缺点:需要人为控制.
一种是智能分页. 录入的时候不做控制,取出的时候,根据制定的规则进行分割.
优点:不需要人为控制,只需要制定分页规则就可以了.
缺点:分页受换行,空格,以及特殊标签,图片,排版限制.规则制定比较复杂,有时候往往超出预期效果.
可以用css+js來控制分頁..
你從數據庫中讀出所有信息
你固定好顯示的寬和高..用css控制顯示還是隱藏.在用js來做一個分頁假象...
一種思路...
7楼建议不错,文章页生成静态页,js控制分页,不用读库,效率高
不错,学习啦
引用 7 楼 woshiguozhongbin 的回复:
可以用css+js來控制分頁..
你從數據庫中讀出所有信息
你固定好顯示的寬和高..用css控制顯示還是隱藏.在用js來做一個分頁假象...
一種思路...
赞一个
支持7楼做法!
有没有人能写点实例代码出来共享一下
function multi($num, $perpage, $curpage, $mpurl, $maxpages = 0, $page = 10, $autogoto = TRUE, $simple = FALSE) {
global $maxpage;
$multipage = '';
$seo_prefix=$this->setting['seo_prefix'];
$seo_suffix=$this->setting['seo_suffix'];
$mpurl = $seo_prefix.$mpurl.'-';
$realpages = 1;
if($num > $perpage) {
$offset = 2;
$realpages = @ceil($num / $perpage);
$pages = $maxpages && $maxpages
if($page > $pages) {
$from = 1;
$to = $pages;
} else {
$from = $curpage - $offset;
$to = $from + $page - 1;
if($from
$to = $curpage + 1 - $from;
$from = 1;
if($to - $from
$to = $page;
}
} elseif($to > $pages) {
$from = $pages - $page + 1;
$to = $pages;
}
}
$multipage = ($curpage - $offset > 1 && $pages > $page ? '1 ...' : '').
($curpage > 1 && !$simple ? '‹‹' : '');
for($i = $from; $i <= $to; $i++) {
$multipage .= $i == $curpage ? ''.$i.'' :''.$i.'';
}
$multipage .= ($curpage ››' : '').
($to ... '.$realpages.'' : '').
(!$simple && $pages > $page && !$ajaxtarget ? '' : '');
$multipage = $multipage ? (!$simple ? ' '.$this->view->lang['commonTotal'].$num.$this->view->lang['commonTotalNum'].' ' : '').$multipage : '';
}
$maxpage = $realpages;
return $multipage;
}
//分页函式
function splitlist($HALT,$LRLIST,$ECHOCNT,$paper,$table,$where,$page_id,$userid){
global $splitstr,$sumcnt;
if($paper=="" || $sumcnt==""){
$query = "select count(*) as num from $table $where";
$result = mysql_query($query);
$row = mysql_fetch_array($result);
$sumcnt=$row["num"];
if($sumcnt==0){
nerror("该版内还没有选择发布新闻 !");
}
$paper=1;
}
$sumpaper=($sumcnt-$sumcnt%$ECHOCNT)/$ECHOCNT;
if(($sumcnt%$ECHOCNT)!=0) $sumpaper+=1;
if($sumpaper==1 && $HALT==0) return($where);
$enwhere=base64_encode(base64_encode($where));
if(($LRLIST*2+1)
if(($paper-$LRLIST)
$tract=1;
$sub=$LRLIST*2+1;
}else if(($paper+$LRLIST) >= $sumpaper){
$tract=$sumpaper-($LRLIST*2);
$sub=$sumpaper;
}else{
$tract=$paper-$LRLIST;
$sub=$paper+$LRLIST;
}
}else{
$tract=1;
$sub=$sumpaper;
}
$uppaper=$paper-1;
$downpaper=$paper+1;
$startcnt=($paper-1)*$ECHOCNT;
$where.=" limit ${ startcnt },${ ECHOCNT }";
if($tract > 1) { $splitstr="【 <
else $splitstr="【 <
for($i=$tract;$i<=$sub;$i++){
if ($i!=$paper) $splitstr.="".$i." ";
else $splitstr.="".$i." ";
}
if ($sub!=$sumpaper) $splitstr.=">> 】";
else $splitstr.=">> 】";
return($where);
}
/*
#### 检索分页函式 ####
Int $HALT - 检索结果仅分1页时是否(1/0)显示页码条
Int $LRLIST - (页码条显示页码数-1)/2
Int $ECHOCNT - 检索时每页显示记录的数量
Int $paper - 页数,预提取:$paper=$HTTP_GET_VARS[paper];
Varchar $table - 数据表名,预附值:$table="db.table";
Varchar $where - 检索条件,预附值:$where="where field='value'";
Varchar $enwhere - 将原$where进行两次base64_encode()编码后以GET的方式提交
Varchar $splitstr - 页码条输出字串,执行函式后在相应的位置执行 echo $splitstr;
函式调用前需获取变量 -
$paper=$HTTP_GET_VARS[paper];
$sumcnt=$HTTP_GET_VARS[sumcnt];
$enwhere=$HTTP_GET_VARS[enwhere];
Return (Varchar $where) - 分页后检索语句的检索条件
注意:本函式需调用出错处理函式 nerror($error);
*/
7楼方法很好 很符合我...我再思考下怎么控制 呵呵 ...多谢
在文章中加入分页标记,然后读取的时候对内容进行切分
不错,学习了。。