【问题标题】:Redirect user to the last page on my pagination将用户重定向到我的分页的最后一页
【发布时间】:2015-04-15 05:26:25
【问题描述】:

我知道这听起来令人困惑: 我刚刚为 mysql 构建了一些基本的上一个/下一个分页,我想知道,如果我的行的最后一页是 .php?page=5 并且有人放 .php?page=263 那么我想将它们重定向到 .php ?page=5

关于如何做到这一点的任何想法.. 我目前拥有的信息是,在 LIMIT 之后返回了多少行,所以如果它是 .php?page=263 那么它将是 0 我的数据库中也有总行数... LIMIT 是 10 :)

提前致谢!!

【问题讨论】:

    标签: php mysql pagination rows


    【解决方案1】:

    如果您已经知道总行数,并且知道每页将显示多少行,那么您可以像这样计算最后一页:

    $totalPages = ceil( $rows / $perPage );
    

    然后,简单地将当前页面限制在合理的范围内:

    $page = isset( $_GET['page'] ) ? (int) $_GET['page'] : 1;
    $page = min( max( $page, 1 ), $totalPages );
    

    【讨论】:

    • 在你发布这个之前,我实际上用一些复杂的数学计算出了这个:(哈哈!
    【解决方案2】:

    最简单的做法是定义某种形式的$max_page_number 变量,然后检查输入$_GET['page'] 的页面是否小于最大可能数量,或者,如果不是,则对其进行补偿并重定向到最后一页:

    $max_page_number = 10; // 或任何最大/最后页码, $page_requested = $_GET['page'];

    if ($page_requested <= $max_page_number) {
    
    // show the page requested by the user
    }
    
    elseif ($page_requested > $max_page_number) {
    
    // redirect to the relevant page
    
    }
    
    else {
    
    // redirect to the splash page, or first page
    
    }
    

    另外值得建议的是,您应该检查人们无法输入index.php?page=-10 而不会被抓住,因此您应该真正检查数字小于第一页和大于你的最后一页。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-19
      • 2018-09-21
      • 1970-01-01
      • 2017-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多