2011-10-24 94 views
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包含字符串被追加到的網址: 即$ urlQuery = 「?VAR1 = XX & VAR2 = XX & VAR3 = XX」

問題是,當表單被提交時,頁面被重新加載,並在url的結尾是?order = dist。

有沒有一種方法可以用&符號替換問號,這樣頁面就會加載並且訂單的價值可以被回收?或者,如果任何人有更好的方式來做整件事情,我肯定會接受建議。 謝謝

回答

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

您可以爲每個要傳輸的變量創建一個隱藏字段,以便它們也被追加。

更好的是,製作形式爲get的方法,然後在後端腳本中使用全局變量$_REQUEST訪問所有變量。

0

將其他變量輸出爲<input type="hidden" name="var1" value="xx" />而不是表單操作,因此它們會被帶入您的查詢字符串中。

0

通過這項行動= 「/搜索」 和$ urlQuery = 「?VAR1 = XX & VAR2 = XX & VAR3 = XX」

則已經價值附加在querysting你應該改變形式方法爲「GET」。

如果您希望將表單方法保留爲「POST」,那麼在提交表單時需要一些javascript來更改表單的操作。