将表单值附加到已经包含变量的URL


Append form value to URL that already has variables in it

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

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

当用户在结果页面时,他们需要能够对结果进行排序。为此,我选择SELECT form

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

是否有一种方法可以用&符号替换问号,以便加载页面并检索订单值?

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

为什么不把它们放在表单中作为隐藏呢?

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

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

更好的是,使get的表单的方法,然后访问所有的变量与$_REQUEST全局后端脚本

将其他变量输出为<input type="hidden" name="var1" value="xx" />而不是作为表单操作,因此它们将被纳入您的查询字符串。

使用此操作="/search" and $urlQuery =" ?var1=xx&var2=xx&var3=xx"

那么要在查询中添加值,您应该将表单方法更改为"GET"。

如果你想保持表单方法为"POST",那么就需要一些javascript来改变表单提交时的动作