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 があることです。

疑問符をアンパサンドに置き換えて、ページが読み込まれ、注文の値を取得できるようにする方法はありますか?

または、誰かが全体を行うためのより良い方法を持っている場合、私は間違いなく提案を受け入れます. ありがとう

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 に答える