MySQL 帖子的 PHP 分页

标签 php mysql pagination

我已经尝试了几个小时来为我正在处理的博客实现分页,但我就是找不到它。在 URL 中,它给了我 (myurl).php?pageno=

没有请求的页码。

这是我处理数据库请求的页面:

<?php

require_once("db-connect.php");

$offset = 0;
$page_result = 5; 

if($_GET['pageno'])
{
 $page_value = $_GET['pageno'];
 if($page_value > 1)
 {  
  $offset = ($page_value - 1) * $page_result;
 }
}


$results = mysqli_query($connection, "SELECT * FROM blog where $condition ORDER BY date DESC LIMIT $offset, $page_result")

or die(mysqli_error('No Records Found'));

?>

这是我的博客页面代码:

<?php

                       if (mysqli_num_rows($results) > 0) {
                           // output data of each row
                           while($row = mysqli_fetch_assoc($results)) {
                               echo "<li class='background-white'><div class='column large-4'><a href='".$row['link']."' class='text-black1' title='".$row["arttitle"]."'>"."<img src='http://tmggeotech.com/img/blog/".$row['thumbnail']."' alt='".$row['thumbalt']."'/>"."</a></div>"."<div class='column large-8 article-data'>"."<h4><a href='".$row['link']."' class='text-black1' title='".$row["arttitle"]."'>".$row["arttitle"]."</a></h4>"."<small class='text-black2'>Publicado el <span class='text-orange2'>".date('m/d/Y', strtotime($row['date']))."</span> | "."Categoría: <span class='text-orange2'>".$row["category"]."</span></small>"."<p>".$row["excerpt"]."</p>"."</div>"."</li>";
                           } }else {
                           echo "0 results";
                       }

                       $pagecount = 50; // Total number of rows
                       $num = $pagecount / $page_result;

                       if($_GET['pageno'] > 1) {
                           echo "<a href='noticias-perforacion-suelos-articulos-maquinas-blog.php?pageno='".($_GET['pageno'] - 1).">Prev</a>";
                       }
                       for($i = 1 ; $i <= $num ; $i++) {
                           echo "<a href='noticias-perforacion-suelos-articulos-maquinas-blog.php?pageno='".$i.">".$i."</a>";
                       }
                       if($num != 1) {
                           echo "<a href='noticias-perforacion-suelos-articulos-maquinas-blog.php?pageno='".($_GET['pageno'] + 1).">Next</a>";
                       }

                       ?>

所以我的问题是:

是不是我缺少什么让它起作用?

最佳答案

感谢@ccKep 指出了一些关于如何获得我需要的东西的线索。我刚刚成功了。

在处理数据库请求的页面中,我添加了第二个请求但没有 LIMIT,这样我就可以使用 num_rows 了:

<?php

require_once("db-connect.php");

$offset = 0;
$page_result = 5; 

if($_GET['pageno'])
{
 $page_value = $_GET['pageno'];
 if($page_value > 1)
 {  
  $offset = ($page_value - 1) * $page_result;
 }
}


$results = mysqli_query($connection, "SELECT * FROM blog where $condition ORDER BY date DESC LIMIT $offset, $page_result")

or die(mysqli_error('No Records Found'));


$npages = mysqli_query($connection, "SELECT * FROM blog where $condition ORDER BY date DESC")

or die(mysqli_error('No Records Found'));

?>

稍后,在我的博客页面上,我将我的帖子四舍五入到下一个 5 的倍数。 并且还更改了我的最后一个 if 语句,以便 NEXT 按钮在获取最后一页后消失。

<?php

                       if (mysqli_num_rows($results) > 0) {
                           // output data of each row
                           while($row = mysqli_fetch_assoc($results)) {
                               echo "<li class='background-white'><div class='column large-4'><a href='".$row['link']."' class='text-black1' title='".$row["arttitle"]."'>"."<img src='http://tmggeotech.com/img/blog/".$row['thumbnail']."' alt='".$row['thumbalt']."'/>"."</a></div>"."<div class='column large-8 article-data'>"."<h4><a href='".$row['link']."' class='text-black1' title='".$row["arttitle"]."'>".$row["arttitle"]."</a></h4>"."<small class='text-black2'>Publicado el <span class='text-orange2'>".date('m/d/Y', strtotime($row['date']))."</span> | "."Categoría: <span class='text-orange2'>".$row["category"]."</span></small>"."<p>".$row["excerpt"]."</p>"."</div>"."</li>";
                           } }else {
                           echo "0 results";
                       }


                       $x = ceil($npages->num_rows/5) * 5;


                       $pagecount = $x; // Total number of rows
                       $num = $pagecount / $page_result;

                       if($_GET['pageno'] > 1) {
                           echo "<a href='noticias-perforacion-suelos-articulos-maquinas-blog.php?pageno=".($_GET["pageno"] - 1)."'>Prev</a>";
                       }
                       for($i = 1 ; $i <= $num ; $i++) {
                           echo "<a href='noticias-perforacion-suelos-articulos-maquinas-blog.php?pageno=".$i."'>".$i."</a>";
                       }
                       if($_GET['pageno'] == $num) {
                           echo "";
                       } else {
                           echo "<a href='noticias-perforacion-suelos-articulos-maquinas-blog.php?pageno=".($_GET["pageno"] + 1)."'>Next</a>";
                       }
                       ?>

您可能会注意到我不是一个很好的编码员,所以如果您找到一种不那么困惑的方法来做到这一点,请告诉我。

干杯!

关于MySQL 帖子的 PHP 分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43875269/

相关文章:

java - Mysql 和 Hibernate 以及 Lob 列

angularjs - 使用带有分页功能的 Angular 过滤器

java - 按下一步显示下一条记录

ruby-on-rails - Rails 缓存分页集合

php - 如何在centos上使用php中的ffmpeg将mp4转换为webm文件

php - 根据mysql中的列值更新查询是否已经存在?

php - Laravel 获取服务配置的基本 url

php - 如何获取没有对的值(根据 session ID,LOGIN没有LOGOUT对)

javascript - 如何打印 JSON 中的特殊字符?

Mysql/PHP - 选择包含部分单词的表名