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

时间:2011-10-24 12:48:42

标签: php forms url select urlvariables

我有一个页面显示用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的字符串: ie $ urlQuery =“?var1 = xx&amp; var2 = xx&amp; var3 = xx”

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

有没有办法用&符号替换问号,这样页面就会加载,订单的价值可以被追溯?

或者,如果有人有更好的方式来完成整个事情,我肯定会接受建议。 感谢

4 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

为什么不将它们隐藏在表格中?

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

答案 3 :(得分:0)

使用此操作=“/ search”和$ urlQuery =“?var1 = xx&amp; var2 = xx&amp; var3 = xx”

然后要在查询中附加值,您应该将表单方法更改为“GET”。

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