当前位置: 首页 > 知识库问答 >
问题:

在分页中更新url参数

麻超
2023-03-14

我已经用php为我的网站实现了分页系统,唯一的问题是:
假设存在分页的url是,www.abc。com/search。php?模式=学习

<?php
function displayPaginationBelow($per_page,$page,$total){

$page_url="http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]&";
$adjacents = "2";
$page = ($page == 0 ? 1 : $page); 
$start = ($page - 1) * $per_page;                              
$prev = $page - 1;                         
$next = $page + 1;
$setLastpage = ceil($total/$per_page);
$lpm1 = $setLastpage - 1;
$setPaginate = "";
if($setLastpage > 1)
{  
    $setPaginate .= "<ul class='setPaginate'>";
    $setPaginate .= "<li class='setPage'>Page $page of $setLastpage</li>";
    if ($setLastpage < 7 + ($adjacents * 2))
    {  
        for ($counter = 1; $counter <= $setLastpage; $counter++)
        {
            if ($counter == $page)
                $setPaginate.= "<li><a class='current_page'>$counter</a></li>";
            elseif (isset($_GET['page'])) {
                unset($_GET['page']);
                $page_url = http_build_query($_GET);
                echo $page_url;
                $setPaginate.= "<li><a href='{$page_url}page=$counter'>$counter</a></li>";
            }
            else
                $setPaginate.= "<li><a href='{$page_url}page=$counter'>$counter</a></li>";                 
        }
    }
    elseif($setLastpage > 5 + ($adjacents * 2))
    {
        if($page < 1 + ($adjacents * 2))    
        {
            for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++)
            {
                if ($counter == $page)
                    $setPaginate.= "<li><a class='current_page'>$counter</a></li>";
                else
                    $setPaginate.= "<li><a href='{$page_url}page=$counter'>$counter</a></li>";                 
            }
            $setPaginate.= "<li class='dot'>...</li>";
            $setPaginate.= "<li><a href='{$page_url}page=$lpm1'>$lpm1</a></li>";
            $setPaginate.= "<li><a href='{$page_url}page=$setLastpage'>$setLastpage</a></li>";     
        }
        elseif($setLastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2))
        {
            $setPaginate.= "<li><a href='{$page_url}page=1'>1</a></li>";
            $setPaginate.= "<li><a href='{$page_url}page=2'>2</a></li>";
            $setPaginate.= "<li class='dot'>...</li>";
            for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++)
            {
                if ($counter == $page)
                    $setPaginate.= "<li><a class='current_page'>$counter</a></li>";
                else
                    $setPaginate.= "<li><a href='{$page_url}page=$counter'>$counter</a></li>";                 
            }
            $setPaginate.= "<li class='dot'>..</li>";
            $setPaginate.= "<li><a href='{$page_url}page=$lpm1'>$lpm1</a></li>";
            $setPaginate.= "<li><a href='{$page_url}page=$setLastpage'>$setLastpage</a></li>";     
        }
        else
        {
            $setPaginate.= "<li><a href='{$page_url}page=1'>1</a></li>";
            $setPaginate.= "<li><a href='{$page_url}page=2'>2</a></li>";
            $setPaginate.= "<li class='dot'>..</li>";
            for ($counter = $setLastpage - (2 + ($adjacents * 2)); $counter <= $setLastpage; $counter++)
            {
                if ($counter == $page)
                    $setPaginate.= "<li><a class='current_page'>$counter</a></li>";
                else
                    $setPaginate.= "<li><a href='{$page_url}page=$counter'>$counter</a></li>";                 
            }
        }
    }
    if ($page < $counter - 1){
        $setPaginate.= "<li><a href='{$page_url}page=$next'>Next</a></li>";
        $setPaginate.= "<li><a href='{$page_url}page=$setLastpage'>Last</a></li>";
    }else{
        $setPaginate.= "<li><a class='current_page'>Next</a></li>";
        $setPaginate.= "<li><a class='current_page'>Last</a></li>";
    }
    $setPaginate.= "</ul>\n";    
}
return $setPaginate;
}

我知道问题出在$page\u url变量上,需要帮助解决这个小问题吗


共有2个答案

胥良平
2023-03-14

在添加新的页面参数之前,需要去掉旧的页面参数。因此,通过unset()

在这个答案中,给出了一种实现这一点的方法。

邵骁
2023-03-14
$page_url = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; //Create the url
$page_url = preg_replace("/(page\=[0-9]+[\&]*)/", "", $page_url); // Delete page query string.
if($page_url[strlen($page_url) - 1 ] !== "&"){ // If last char is not &
    $page_url .= "&"; // add &
}
 类似资料:
  • 非常简单的要求,但很难做到这一点。有一个简单的页面,我打印参数在url路径。 ngtest.html 在浏览器窗口中: 将更改为类似 什么也没发生。按F5键,它将按预期工作。 不确定这是否与浏览器行为有关,但如何强制页面在参数更改后刷新Enter?

  • 问题内容: 分页时有什么方法可以保留我的GET参数。 我的问题是我有几个不同的网址,即 我应该如何在分页类中创建指向页面上具有不同页码的页面的链接,但仍然保留网址的其他部分? 问题答案: 简而言之,您只需解析URL,然后在最后添加参数,或者如果参数已经存在,则将其替换。 此示例代码需要用于和的PHP HTTP模块 。后者可以替换为第一个,如果没有安装模块,则可以使用PHP用户空间实现。 另一种选择

  • 问题内容: 我有这个网址: 我需要的是能够将“行”的url参数值更改为我指定的值,比方说10。如果“行”不存在,则需要将其添加到url的末尾并添加我已经指定的值(10)。 问题答案: 在学到很多东西之后的四年后,回答我自己的问题。特别是您不应该将jQuery用于所有功能。我创建了一个可以解析/字符串化查询字符串的简单模块。这使得修改查询字符串变得容易。 您可以按以下方式使用查询字符串:

  • 我有一个带有分页的表视图。如下(简化): 问题是,当我更新数据时(ObservableList)。更改在表视图中不可见。 在我看来,问题出在中。如果我使用设置项目,所有更改都会立即在中可见。 有什么想法,我该怎么解决这个问题? 编辑 我正在更新如下数据:

  • 问题内容: 如何在不刷新页面的情况下更改URL? 我已经用CodeIginer建立了一个网站,我想在我的页面之一中实现AJAX和JQuery。问题是; 当我加载内容时,URL不会改变。 假设我有URL 和另一个URL: 单击按钮时如何将第一个URL更改为第二个URL? 问题答案: 在HTML5中,您可以更改URL: 检查http://spoiledmilk.com/blog/html5-chang

  • 加载页面视图时,将对函数AjaxProductList()启动一个ajax调用; 当我点击分页中的任何一个链接时,它会成功地处理数据,但不会更新活动链接。即,如果我点击第5页,它将获取正确的数据,但活动链接将仍然在第1页。 请告诉我,我是否做错了什么? 提前道谢。