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

admin

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

效果可参见本站动态页。

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

版权协议须知!

本篇文章来源于 VirCloud ,如本文章侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意

801 0 2019-08-01

以下评论来自歌曲“Pneumatic Tokyo”中的神评论

以下评论来自歌曲“Pneumatic Tokyo”中的神评...

阅读全文
选自歌曲“连名带姓”神评论

我凝视着你的信仰,是众所周知的热门话题,我等着你的勇气,从...

阅读全文
微语程序"个人信息显示插件"

这款插件个人感觉也十分的辣鸡,胜在娱乐一下也好。前端css...

阅读全文
一个2019-nCoV疫情实时播报QQ机器人

程序是php语言写的配合酷Q HTTP API插件使用,具...

阅读全文
选择表情
  • 默认
  • 护眼
  • 夜晚
  • Serif
  • Sans