0

我有一个页面显示用 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 的值?

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

4

4 回答 4

0

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

更好的是,制作表单的方法,get然后$_REQUEST在后端脚本中使用全局访问所有变量。

于 2011-10-24T12:52:55.543 回答
0

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

于 2011-10-24T12:53:24.937 回答
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>
于 2011-10-24T12:53:46.270 回答
0

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

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

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

于 2011-10-24T12:57:33.123 回答