【问题标题】:All Pagination numbers are displaying using PHP and Mysql所有分页编号都使用 PHP 和 Mysql 显示
【发布时间】:2017-08-07 12:34:51
【问题描述】:

我正在从数据库中获取用户名和 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>

【问题讨论】:

  • “我把所有数字都排成水平”是什么意思?
  • 表示我得到的数字是 1,2,3,4,5,6,7,8,9,10,11..等等。我需要像 1,2,3,4,5...20 这样的数字(这是最后一个数字)

标签: php mysql pagination


【解决方案1】:

这是一个简单的想法,但我没有测试它。编辑 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>';
}

编辑

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

<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>

【讨论】:

  • 感谢 Jirka 先生的回复,它正在工作,但我没有 (...) 介于两者之间
  • 前两个也不起作用..就像 1 和 2。没有得到任何记录。如果我点击 3,那么我会得到记录
  • 我在沙盒中试过了,应该可以了。我只是忘记了$for 循环一致。这三个点被硬编码为第一页和最后一页的字符串,前两条记录没有理由不起作用。我将发布沙盒的输出。
  • Jirka 先生,我的分页数达到了 16、17、18、19、20。现在我在我的屏幕上获得了 16 的记录,但是当我点击 17 时,16 的数字与我点击的 18 相同,然后 17 在 20 显示结束时消失
  • 是的,我忘记了,但这很简单
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-05
    • 2017-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多