MySQL Pagination for MySQL帖子

时间:2017-05-09 16:30:09

标签: 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>";
                       }

                       ?>

所以我的问题是:

这里有什么东西让我失去工作吗?

1 个答案:

答案 0 :(得分:0)

感谢@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>";
                       }
                       ?>

您可能会注意到我不是一个非常优秀的程序员,所以如果您发现这种方法不那么混乱,请告诉我。

干杯!