php - 如何只显示特定页数而不是所有页数?

标签 php mysql sql

分页代码 PHP/HTML:

<?php

//Connecting To The DB And Fetching Number Of Rows.
$stmt = $pdo->prepare('SELECT * FROM locations');
$stmt->execute();
$count = $stmt->rowCount();
$values = $stmt->fetchAll(); 

//Check If Page Number Is Set To Specific Value.
if (isset($_GET['pageno'])) 
{
    $pageno = $_GET['pageno'];                                //Current Page Number.
    $no_of_records_per_page = 100;                           // Number Of Rows Per Page.
    $total_pages = ceil($count / $no_of_records_per_page);  //Total Number Of Pages.
    $offset = ($pageno-1) * $no_of_records_per_page;       //Starting From. 
} 

//If Page Number Not Specified The First Page Will Be Shown.
else 
{
    $pageno = 1;
}

?>


<ul class="pagination">
    //First Page.
    <li>
        <a href="?pageno=1">First</a>
    </li>
    //Previous Page.
    <li>
        <a href="<?php if($pageno <= 1){ echo '#'; } else { echo "?pageno=".($pageno - 1); } ?>">Prev</a>
    </li>
    <li>
        //Loop Through Pages.
        <?php
            for ($i=1; $i <= $total_pages ; $i++) 
            { 
                echo '<a href="?pageno='.$i.'">'.$i.'</a>';
            }
        ?>
    </li>
    //Next Page.
    <li>
        <a href="<?php if($pageno >= $total_pages){ echo '#'; } else { echo "?pageno=".($pageno + 1); } ?>">Next</a>
    </li>
    //Last Page.
    <li>
        <a href="?pageno=<?php echo $total_pages; ?>">Last</a>
    </li>
</ul>

现在它显示了 php 页面中的所有页面。

    ______      ______      ______     _______      ________     _______
   |      |    |      |    |      |    |      |     |       |    |      |
   |  1   |    |  2   |    |  3   |    |   4  |     |  5    |    |   6  |
   |______|    |______|    |______|    |______|     |______ |    |______|  ..

我只想显示特定数量的页面,例如 5 或 7 ,当我转到下一页时,会显示一个新页面,例如:

1 2 3 4 5 .... 30  //When I Go To The First Page , 30 Is the last page.
1 . . 4 5 6 .. 30  //When I Go To Page Number 5. 
1 . . 27 28 29 30  //When I Go To The Last Page.

如何实现这一目标或类似的目标?

最佳答案

if ($pageno > 4) {
    echo '<a>1st page link</a>';
    echo '...';
}  

for ($i = $pageno-3; $i <= $pageno+3; $i++) {
    if ($i <= 0 OR $i == $pageno) continue;
    if ($i > $total_pages) break;
    echo '<a>#1 page link</a>';
}

if ($pageno < $total_pages-4) {
    echo '...';
    echo '<a>last page link</a>';
}

关于php - 如何只显示特定页数而不是所有页数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49465895/

相关文章:

php - 多个 spl_autoload_register 问题

php - 由于点符号,无法在查询中指定我的表名

mysql - 匹配没有意义

mysql多列订单

mysql - Update Case When,有多个条件

php - 使用 PHPUnit 7 测试旧的 PHP 版本

php - 将数据库信息存储为数组

java - 提高mysql插入速度

mysql - 带有文本的大型表上 SQL 连接的过滤顺序

mysql - 读取字段名称并检测用于创建表的文本文件的数据类型