奇乐网 - 草根博客网站

Typecho 利用 PHP 实现上一页下一页的分页方法

admin 137 0

特别声明:文章多为网络转载,资源使用一般不提供任何帮助,特殊资源除外,如有侵权请联系!

之前介绍过《Typecho 长文章利用 PHP 分页实现方法》,那是针对数据库一笔大数据(数据量庞大)的分页实现方法,今天要分享的是针对数据库多笔数据的分页实现方法。

对于 Typecho,多笔数据分页主要应用在文章列表页、评论列表页等使用场景,接下来以取评论列表为例来说明。

<?php 
/* 获取评论清单
*  并按指定笔数分页显示
*/
......

$db = $this->db;
$options = $this->options;
$url = $this->permalink;
$cut = 15; #每 15 笔分页

//倒序抓取每一页评论数据(最新的排前面)
$page = isset($request->page) ? $request->page : 1 ;
$links = $db->fetchAll($db->select()->from('table.commentss')
            ->where('table.comments.status = ?', 'approved')
            ->where('table.comments.type = ?', 'comment')
            ->page($page, $cut)->order('table.comments.created', Typecho_Db::SORT_DESC));
?>

//显示评论内容
<ol>
<?php foreach($links as $link) :?>
<li>
    <a href="<?php _e($link['url']); ?>">
        <?php _e($link['author']); ?>
    </a>
    <p>
        <?php _e($link['text']); ?>
    </p>
</li>
<?php endforeach;?>
</ol>

//显示分页导航样式一
<ul>
<?php $total = $db->fetchObject($db->select(array('COUNT(coid)' => 'num'))->from('table.comments'))->num; ?>
<?php for($i=1;$i<=ceil($total/$cut);$i++): ?>
<li <?php if($i=$page){ _e('class="current"'); ?>>
    <a href="?page=<?php _e($i);?>" title='第 <?php _e($i); ?> 页'>
        <?php _e($i); ?>
    </a>
</li>
<?php endfor; ?>
</ul>

//显示分页导航样式二
<?php
$first=1;
$prev=$page-1;
$next=$page+1;
$last=$total;
if ($page >1){
 echo '<a href="?page='.$first.'">首页</a>';
 echo '<a href="?page='.$prev.'">上一页</a>';
}
if ($page < $last){
 echo '<a href="?page='.$next.'">下一页</a>';
 echo '<a href='?page='.$last.'">尾页</a>';
}
?>

效果可参见本站动态页。

分页代码本身并不难,关键是要理解分页的原理,理解了再来看就会发现原来分页是这样的有趣!

评论列表 (已有0条评论)

消灭零回复

发表评论 (已有0条评论)

选择表情