【问题标题】:Pagination: Nothing appears on 2nd page分页:第二页没有出现任何内容
【发布时间】:2016-03-29 08:34:10
【问题描述】:

我之前一直在将此分页用于我的其他一些项目,它们似乎可以工作......但是现在我正在尝试这个,它可以列出第 1 页上的所有内容,但是一旦我进入页面2 根本没有结果(即使数据库中有超过 5 行可用)

现在是深夜,我可能会失明,但这真的很令人不安。任何线索为什么它没有在第 2 页及更多页面上显示任何内容?

<?php

    // Prepare pagination
    $getPage = $_GET["page"];
    if(isset($getPage)) { $page  = $getPage; } else { $page = 1; }; 
    $start_from = ($page-1) * 20; 

    // Get articles
    $Listquery = $LibraryArticle->mysqli->query("SELECT * FROM site_articles ORDER BY id DESC LIMIT $start_from, 5");
    while($fetchlistquery = $Listquery->fetch_array()) {

    $article_content = (strlen($fetchlistquery['article_desc']) > 244) ? substr($fetchlistquery['article_desc'],0,245).'...' : $fetchlistquery['article_desc'];
?>
    <div id="news_container">
        <img src="<?php echo $fetchlistquery["article_img"]; ?>" class="newsbox-style" />
        <div class="news-title"><?php echo $fetchlistquery["article_title"]; ?></div>
        <?php echo $article_content; ?>
        <div class="read-more"><a href="">Read more</a> &rightarrow;</div>
        <br style="clear: both;">
    </div>
<?php
    }

    // Intiate pagination
    $countarticles = $LibraryArticle->mysqli->query("SELECT COUNT(id) FROM site_articles");
    $row = $countarticles->fetch_row();
    $total_records = $row[0]; 
    $total_pages = ceil($total_records / 5);

    echo "<div style='float:right;'>";

    for ($i = 1; $i <= $total_pages; $i++) { 
        echo "<a href='?page=".$i."'><div class='news-pagi'>".$i."</div></a>"; 
    } 

    echo "</div>";
?>

【问题讨论】:

  • 显示第二页的查询是什么?您可以转储它,还是从 MySQL 常规日志中获取它?
  • 你有$start_from = ($page-1) * 20;,所以除非你有超过40行,那么在页面2上它不会返回任何东西。我假设既然你有... LIMIT $start_from, 5"$total_pages = ceil($total_records / 5);,你的意思是做 ``$start_from = ($page-1) * 5;` 代替。
  • 谢谢@Sean。奇怪的是,我之前就尝试过,但没有任何改变,哦,好吧。

标签: php mysqli pagination


【解决方案1】:

我猜这是一个快速模式,可以在您的数据库中仅使用几行来测试分页,但您每页仅显示 5 行,但您的 $start_from 正在增加 $page * 20

// Prepare pagination
$getPage = $_GET["page"];
if(isset($getPage)) { $page  = $getPage; } else { $page = 1; }; 
$start_from = ($page-1) * 20; //  <-- change to 5

// Get articles
$Listquery = $LibraryArticle->mysqli->query("SELECT * 
                                             FROM site_articles 
                                             ORDER BY id DESC 
                                             LIMIT $start_from, 5");
// or change LIMIT to 20

【讨论】:

  • 不,我自己也做过同样的事情……不止一次@Fred-ii-
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-28
相关资源
最近更新 更多