php - 分页自定义博客脚本
问题描述
过去几天我一直在开发基于 Bootstrap 4 的自定义博客脚本,除了主页上的分页之外,我几乎完成了,我已经用页面编码了上半部分(主要是从数据库中获取计数)但是“旧帖子>”部分给我带来了问题,我从来没有很好的分页。
代码:
<!-- Main Content -->
<div class="container">
<div class="row">
<div class="col-lg-8 col-md-10 mx-auto">
<?php
if (isset($_GET['page'])) {
$page = $_GET['page'];
} else {
$page = 1;
}
$max_results = 50;
$from = $page * $max_results - $max_results;
$posts = DB::getInstance()->select('
SELECT *
FROM `blog_posts`
ORDER BY `post_date` DESC
LIMIT :from, :max_results',
[
'from' => [
'type' => PDO::PARAM_INT,
'value' => $from
],
'max_results' => [
'type' => PDO::PARAM_INT,
'value' => $max_results
]
]);
$total_results = DB::getInstance()->selectValue('SELECT count(*) FROM `blog_posts`');
if ($total_results < 1) {
stderr('There is <b>no</b> posts yet!');
} else {
?>
<?php foreach($posts as $post) { ?>
<div class="post-preview">
<a href="post.html"><h2 class="post-title"><?= urlFriendlyUrls($post['post_title'], $post['post_id']); ?></h2></a>
<p class="post-meta"><?= truncateArticle($post['post_body'], 250); ?></p>
<p class="post-meta">Posted by <a href="#">Start Bootstrap</a> on <?= date("F j, Y, g:i a", strtotime($post['post_date'])); ?></p>
</div>
<hr>
<?php } ?>
<?php } ?>
<!-- Pager -->
<div class="clearfix">
<a class="btn btn-primary float-right" href="#">Older Posts →</a>
</div>
</div>
</div>
</div>
我不知道在可点击链接部分编码的最佳方式,任何正确方向的帮助将不胜感激。
解决方案
修改您的查询以限制基于$_GET['page']
使用 OFFSET 和 LIMIT 或任何 PDO 获得的结果量。
下一步是让您的Older Posts
按钮指向同一个网页,但page=$_GET['page'] - 1
在 url 中。
因此,您应该在每次点击时都转到上一页Older Posts
- 您可能还希望将其限制为 0。
推荐阅读
- c++ - nullptr 和 boolean 之间的比较
- c++ - 使用简单的两阶段锁定的并发程序
- python - Mac 终端显示两个不同版本的 Python
- node.js - 没有得到猫鼬模型的响应。find()查询
- python - Pandas 中的同比增长列计算
- karate - 即使定位器在 DOM 中可用,Assert exists().exists 也会返回评估为 false 的断言
- android - 使用地图框:错误(评估'MapboxGL.StyleURL')
- python - 使用 print(", ".join(my_array)) 提取单个字符串并将其添加到 streamlit markdown。我没有得到字符串,而是得到了 NONE
- docker - 在 docker build 中打印 ARG 值
- git - 第一次运行时出现“包 org.junit 不存在”