【问题标题】:php pagination - how do i limit the number of pages showphp分页 - 我如何限制页面显示的数量
【发布时间】:2017-03-11 07:43:02
【问题描述】:

我很难理解如何通过分页来限制页数。我正在尝试在我的数据库中列出我的文章,但我有超过 500 页!我只想一次最多显示大约 15 个页码。我似乎无法理解其他问题中给出的答案。

这是我的分页代码:

<?php 
    require 'core/init.php';

    $page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
    if(!isset($_GET['page'])){
        $_GET['page'] = 1;
    }
    if(! (int)$_GET['page']){
        $_GET['page'] = 1;
    }
    if($_GET['page'] < 1){
        $_GET['page'] = 1;
    }
    $perPage = 18;
    $start = ($page > 1) ? ($page * $perPage) - $perPage : 0; 

    $articles = DB::getInstance()->query("SELECT SQL_CALC_FOUND_ROWS * FROM articles ORDER BY added DESC LIMIT {$start}, {$perPage}");

    foreach($articles->results() as $article){ ?>
        <div class="article-container">
            <h2><?php echo $article->title; ?></h2>
        </div>
    <?php 
    }

    // pagination 

    $total = DB::getInstance()->query("SELECT FOUND_ROWS() as total");

    $total = $total->results()[0];

    foreach ($total as $total => $value) {

    }

    $pages = ceil($value / $perPage);
    $maxpage = 15;
?>
<div class="pagination"> 
    <?php if($_GET['page'] >= 2){
        echo '<a href="?page=' . ($_GET['page'] -1) . '" class="paginationButton">Prev</a>';
    }
    for ($i=1; $i <= $pages; $i++) : ?>
        <a href="?page=<?php echo $i; ?>" <?php if($page === $i) { echo 'class="pageSelected"'; } ?>><?php echo $i; ?></a>
    <?php   endfor;
        if((int)$_GET['page'] != $i - 1 ){
            echo '<a href="?page=' . ($_GET['page'] +1) . '"class="paginationButton">Next</a>';
        }
    ?>
</div>

这按预期工作,但它只吐出从 1 到 500 的页数。显示此类内容的最佳/最简单方法是什么:

1 2 3 4 5 6 7 8 9 10 11 12 13 ... >

?

【问题讨论】:

    标签: php pagination


    【解决方案1】:

    你需要改变你的for-cycle,起点和终点

    $count = 9;
    $startPage = max(1, $page - $count);
    $endPage = min( $pages, $page + $count);
    for($i = $startPage; $i < $endPage; $i++) {
        // write out the link to the page
    }
    

    那么如果页面为 250,它将仅显示 241、242、...、250、...、257、258

    【讨论】:

    • 应该有; $i
    猜你喜欢
    • 2020-02-14
    • 2011-12-23
    • 1970-01-01
    • 2021-05-16
    • 2011-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多