【问题标题】:How can I add GET variables to the end of the current page url using a form with php?如何使用带有 php 的表单将 GET 变量添加到当前页面 url 的末尾?
【发布时间】:2011-03-05 08:57:57
【问题描述】:

我有一些正在页面上显示的数据库信息。

我正在使用一个在 url 中使用 $_GET['page'] 变量的分页类。当您点击不同的分页锚标签时,它会将$_GET['page'] 更改为url 中的新数字并显示相应的结果。

我有使用$_GET['searchby']$_GET['search_input'] 变量的排序和搜索功能。用户在使用 GET 的表单上输入他们的搜索条件。然后将变量放入 url 以显示正确的结果。

我遇到的问题是,每当我点击分页链接时,它会将$_GET['page'] 变量添加到网址的末尾并删除$_GET['searchby']$_GET['search_input']。当我提交搜索表单时,它会添加$_GET['searchby']$_GET['search_input'],但会删除$_GET['page']

如何使用锚标记和搜索/排序表单将 GET 变量添加到当前页面 url 的末尾,而不会删除任何现有的 GET 变量,但如果它们是相同的 GET 变量名则覆盖它们?

【问题讨论】:

    标签: php forms get pagination


    【解决方案1】:

    试试这个:

    if (strpos($_SERVER['REQUEST_URI'], '?') !== false)
    {
      $url = $_SERVER['REQUEST_URI'] . '&var=value';
    }
    else
    {
      $url = $_SERVER['REQUEST_URI'] . '?var=value';
    }
    
    <a href="<php echo $url;>">Go</a>
    

    请注意,$_SERVER['REQUEST_URI'] 会为您提供当前 url,包括查询字符串值。

    【讨论】:

    • 我不确定,但我很确定如果请求 URI 还没有一些 get 变量,它会失败。例如,如果您在example.php?foo=bar,那么您的脚本将正常工作,输出example.php?foo=bar&amp;var=value。但是如果你在example.php,那么你的脚本会输出example.php&amp;var=value,这是无效的。
    • 我试试看。对于使用表单添加到 url 的 GET 变量,我该如何解决这个问题?
    • @zeckdude:GET 变量来自哪里并不重要
    • @phleet:我一开始也是这么想的,但是忘记写条件了,谢谢。
    • @phleet & Sarfaz Ahmed: $url = $_SERVER['REQUEST_URI'] . (strpos($_SERVER['REQUEST_URI'],'?') === false) ? '?var=value' : '&amp;var=value';
    【解决方案2】:
    $query_string = http_build_query(array_merge($_GET, array('page' => $page)));
    

    【讨论】:

    • 表单添加的get变量怎么样?
    • 不,它们仅在用户搜索表单时通过使用表单的 get 操作添加。
    • @zeckdude 看来你错过了一些东西。当用户搜索某些内容时,您在 $_GET 数组中有搜索条件。你的问题是How can I add GET variables,所以我们假设我们已经有了这些变量。如果你还是不明白,你最好解释一下。或者你最好尝试一下。因为我的代码准确地回答了你的问题。
    猜你喜欢
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-17
    • 1970-01-01
    • 2021-03-29
    • 1970-01-01
    相关资源
    最近更新 更多