【问题标题】:Append form value to URL that already has variables in it将表单值附加到其中已经包含变量的 URL
【发布时间】:2011-12-14 02:55:40
【问题描述】:

我有一个页面显示用 PHP 编写的 MYSQL 查询的结果。该 URL 具有用户在上一页提交的变量为:

www.mydomain.com/search/?var1=xx&var2=xx&var3=xx

当用户在结果页面上时,他们需要能够对结果进行排序。为此,我有一个 SELECT 表单

<form action="/search<?php echo $urlQuery; ?>"  name="order "class="formsrch" method="post" >
            <label>sort by:</label>
            <select class="order" id="order" name="order" onChange="this.form.submit()">
                <option value="pricedesc">Price High to Low</option>
                <option value="priceasc">Price Low to High</option>
                <option value="dist">Distance</option>
            </select>
        </form>

变量 $urlQuery 包含要附加到 url 的字符串: 即 $urlQuery = "?var1=xx&var2=xx&var3=xx"

问题是提交表单时页面会重新加载,并且 url 的末尾是 ?order=dist。

有没有办法用 & 号替换问号,以便加载页面并检索 order 的值?

或者,如果有人有更好的方法来完成整个事情,我绝对愿意接受建议。 谢谢

【问题讨论】:

    标签: php forms url select urlvariables


    【解决方案1】:

    你为什么不把它们隐藏在表单中?

    <?php
    $extraVars = "";
      foreach($_GET AS $key=>$value) {
       $extraVars .= '<input type="hidden" name="'.$key.'" value="'.$value.'" />';
      }
    ?>
    <form action="/search"  name="order "class="formsrch" method="post" >
        <?php echo $extraVars;?>
        <label>sort by:</label>
        <select class="order" id="order" name="order" onChange="this.form.submit()">
            <option value="pricedesc">Price High to Low</option>
            <option value="priceasc">Price Low to High</option>
            <option value="dist">Distance</option>
        </select>
    </form>
    

    【讨论】:

      【解决方案2】:

      您可以为要传输的每个变量创建一个隐藏字段,以便它们也被附加。

      更好的是,创建get 形式的方法,然后在后端脚本中使用$_REQUEST 全局变量访问所有变量。

      【讨论】:

        【解决方案3】:

        将其他变量输出为&lt;input type="hidden" name="var1" value="xx" /&gt; 而不是作为表单操作,这样它们就会被纳入您的查询字符串。

        【讨论】:

          【解决方案4】:

          有了这个 action="/search" 和 $urlQuery = "?var1=xx&var2=xx&var3=xx"

          然后要将值附加到查询字符串上,您应该将表单方法更改为“GET”。

          如果您想将表单方法保持为“POST”,那么在提交表单时需要一些 javascript 来更改表单的操作。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-07-13
            • 2020-01-08
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多