所有分页编号都使用PHP和Mysql显示

时间:2017-03-16 11:07:02

标签: php mysql pagination

我从数据库中获取用户名和ID。我有超过500个用户名。我必须只显示1到5的分页编号和最后的分页编号。

示例: - 分页编号为: - 1 2 3 4 5 ... 20(最后一个编号)。

现在我正在横向收集所有数字。你能帮帮我吗?

任何人都可以帮助我进行NEXT和LAST的分页吗?

include('../db/connection.php');
    $reclimit = 3;
     if(isset($_GET['page'])){
        $page = $_GET['page'];
    } else {
        $page = 1;
    }

    $start = (($page-1) * $reclimit);
    $sql = "SELECT * FROM request";

    $records =$conn->query($sql);;
    $total = $records->num_rows;
    $tpages = ceil($total / $reclimit);

    $search_sql="SELECT * FROM request LIMIT ".$start."," .$reclimit; 
    $search_result = $conn->query($search_sql); 

HTML

 <body>
    <?php 

        if (isset($search_result->num_rows) > 0) {
        ?>
        <h2 class="result-title">Results matching your need</h2>
        <?php
            while($search_ok = $search_result->fetch_assoc()) {
                    $user_id=$search_ok['Id'];
                    $user_name=$search_ok['Name'];

        echo "
            <div class='search-section'>
                    <div class='search-profile'>

                    <div class='s_user_id'>{$user_id}</div>
                    <div class='s_user_name'>{$user_name}</div>

                    </div>
                    </div>
        ";

         }}
      for($i=1;$i<=$tpages;$i++) {
                        echo "<a href=page.php?page=".$i.">".$i."</a>";
                    }
                ?>



    </body>

2 个答案:

答案 0 :(得分:0)

您使用的分页很简单且有效。但是你正在搜索的分页是聪明的方式,你应该通过使用一些if条件来实现这一点。 SO中也有类似的答案。转到下面,这可能对您有所帮助

答案 1 :(得分:0)

这是一个简单的想法,但我没有测试它。编辑显示数字的foreach:

$pgStart = 1;
if (isset($_GET['page'])) { // get first showing number = current page - 2
    $pg = $_GET['page'] - 2;
    $pgStart = $pg + 5 > $tpages ? $tpages - 4 : $pg; //EDIT fix when reach pages end
    $pgStart = $pg < 1 ? 1 : $pg; // This must be after ending correction (previous line)
}

if ($pgStart > 1) { // show 1
    echo '<a href=page.php?page="1">1</a> ... ';
}

for($i = $pgStart; $i <= $tpages && $i < $pgStart + 5; $i++) { // show 5 pages
    echo ' <a href=page.php?page="'.$i.'">'.$i.'</a> ';
}

if ($i < $tpages) { // show last
    echo ' ... <a href=page.php?page="'.$tpages.'">'.$tpages.'</a>';
}

修改

来自php沙箱的$_GET['page'] = 7$tpages = 20此脚本的输出是(没有换行符):

<a href=page.php?page="1">1</a> ... 
<a href=page.php?page="5">5</a> 
<a href=page.php?page="6">6</a> 
<a href=page.php?page="7">7</a> 
<a href=page.php?page="8">8</a> 
<a href=page.php?page="9">9</a> 
... <a href=page.php?page="20">20</a>