【问题标题】:PHP Pagination for MySQL postsMySQL 帖子的 PHP 分页
【发布时间】:2017-05-10 03:44:30
【问题描述】:

我已经尝试了几个小时来为我正在处理的博客实现分页,但我就是找不到它可以工作。在 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>";
                       }

                       ?>

所以我的问题是:

我在这里是否缺少一些东西来使它工作?

【问题讨论】:

  • 您正在关闭您的链接href 属性,正好在您的号码之前。 (')
  • @AbhijeetDas 链接失效。
  • @ccKep 你是对的!我的关闭链接错误。但是,它仍然给我一些问题。喜欢的数字多于页面,即使没有更多帖子也喜欢“下一个按钮”......我应该为此创建一个新问题吗?
  • @JoanManuelHernández 好吧,您正在设置$pagecount = 50; - 这必须是动态的。你应该ceil()你的$num(例如17个结果需要4页)。

标签: php mysql pagination


【解决方案1】:

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

在处理数据库请求的页面中,我添加了第二个请求,但没有限制,因此我可以使用 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>";
                       }
                       ?>

你可能会注意到我不是一个很好的编码器,所以如果你找到一种不那么混乱的方法,请告诉我。

干杯!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-20
    • 2013-01-23
    • 1970-01-01
    • 1970-01-01
    • 2011-02-06
    • 2013-05-25
    • 2018-01-12
    • 2011-04-14
    相关资源
    最近更新 更多