对于单篇文章静态分页.
1 如何分页
一种是动态分页. 根据页面字数,自动分成几页. 不用预处理.缺点是,因为文章有好多html代码,以及一些内容比较紧凑的内容,如果智能处理,这是一个需要研究的地方.
第二种,在添加文章的时候,自动插入分页符,生成文章时根据分页符生成静态页面.缺点是需要人为控制.优点是人的智能取代机器的智能.使分页更为合理.2 分页命名,以及保存.
保存目录,可以根据时间串来存,可以根据分类串保存,也可以时间串加分类串保存.
分页文章命名.文章命名最好包括分类,时间以及一些文章对应的特殊的数据,为了安全,可以用md5加密.
对于文章的内部页面,可以加_1,_2这样,我觉得用数字更好些.

解决方案 »

  1.   

    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;
    }
      

  2.   

    函数:
    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>';
      

  3.   

    /**
     * 翻页函数
     *
     * @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.'>&lsaquo;&lsaquo;</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.'>&rsaquo;&rsaquo;</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>&nbsp;'.$num.'&nbsp;</em>' : '').$multipage.'</div>' : '';
    }
    return $multipage;
    }
      

  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.'>&lsaquo;&lsaquo;</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.'>&rsaquo;&rsaquo;</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>&nbsp;'.$num.'&nbsp;</em>' : '').$multipage.'</div>' : '';
    }
    return $multipage;
    }