2012-01-27 27 views
0

私は非常に基本的なページネーションスクリプトを持っていると〜4つのフィールドを持つフォームを検索し、action="get"は今、私の問題は、私は自分のフォームを送信するとき、私はこのようなURL得る、ということですので、改ページと検索フォームの問題

user/people/2 

ので、私の検索パラメータが消え、これは私が私のリンク

をレンダリングする方法である:私はすべてがうまくで形成するが、私はページに 2私のURLが変更に行く際に提出した後、私はそのようにそれを行う必要があり、今私が唯一、すべての $_GET値をマージして forループを考えると、私のリンクを構築することができますので、210
href="user/people/<?=$next?>" 

は、だから私の質問は、私のparamentersを維持するための最良の方法何ですか?

答えて

1

$_SERVER[ 'QUERY_STRING' ]を追加してください(最初にhtmlspecialchars()にしてください)。ところで

href="user/people/<?php echo htmlspecialchars("{$next}?{$_SERVER[ 'QUERY_STRING' ]}"); ?>" 

、PHPの短いタグ<?= ?>は移植性がありませんので、あなたはそれらを使用して、代わりに<?php echo ?>を使用しないで検討すべきです。

更新:

@Wrikkenがその答えで良い点のカップルが発生します。

1)属性値を単一引用符場合htmlspecialchars()に2つ目の引数としてENT_QUOTESを渡すと(重要であろうか、将来それをシングルクォートに変更することを含む)。とにかく、私はほとんど常に属性値を二重引用符で囲むので、これは忘れ易いものです。残念ながら、長い関数名ですでに膨れている呼び出しをさらに膨らませるのは残念です。

2)そのままクエリ文字列を渡しているのなら、確かに$_SERVER[ 'QUERY_STRING' ]の代わりにhttp_build_query($_GET)を使用することをお勧めします。ただし、クエリパラメータの一部を変更する必要がある場合は、http_build_query()がチケットになります。私のPHP faceted browserにそれの例を見ることができます。

1

次のいずれかの

...ople/?<?php echo htmlspecialchars($_SERVER['QUERY_STRING'], ENT_QUOTES);?>" 

または:

...ople/?<?php echo htmlspecialchars(http_build_query($_GET), ENT_QUOTES);?>" 

または:

...ople/?<?php echo htmlspecialchars(http_build_query($some_custom_array), ENT_QUOTES);?>"