我有一个页面显示用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。
有没有办法用&符号替换问号,这样页面就会加载,订单的价值可以被追溯?
或者,如果有人有更好的方式来完成整个事情,我肯定会接受建议。 感谢
答案 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来更改表单的操作。