我有一个页面显示用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来改变表单提交时的动作