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

小助手读文章 00:00 / 00:00

之前介绍过《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>';
}
?>

效果可参见本站动态页。

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


参考文章:

1、《PHP分页技术详解


ArmxMod for Typecho
个性化、自适应、功能强大的响应式主题

推广

 继续浏览关于 phptypechowordpress分页长文章 的文章

 本文最后更新于 2019/03/07 17:00:00,可能因经年累月而与现状有所差异

 引用转载请注明:VirCloud's Blog > 建站 > Typecho 利用 PHP 实现上一页下一页的分页方法