0

URL パラメータに少し問題があります。

結果リストを取得するために一部のデータのみを取得しているため、メソッド GET を使用するフォームがあります。データは決して誰にも秘密ではありません。要するに、フォームに屋根の測定値を入力することができ、それらの数値を使用して、購入する必要がある屋根瓦の数などを計算します。フォームでは、計算する余分な屋根瓦の割合 (fx 3% extra) を入力することもできます。入力を終了して計算を押すと、次のような URL が表示されます。

index.php?page=matliste&width=8&length=12&angle-1=45&extra=3&zip=9000&tagfod=tagfod&finish_stone=dv&topsten=utop&angle=45&mainhouse=1&house=1&rooftype=uu&lang=dk&rooftiletype=1&rid=1&producent=h

これで私は3%余分に持っています。しかし、フォームに戻って fx 5% を入力しても更新されません。新しいパラメーターを挿入するだけなので、次のようになります。

extra=5&extra=3

既存のパラメータを削除して、新しい番号で新しいパラメータを挿入するにはどうすればよいですか?

これを使用して、フォーム フィールドからクエリを作成しています。

if($_GET["newpage"] == "matliste") {   
    $get_elements = array_filter($_GET, "strlen");        

    $url = http_build_query($get_elements);

    $search_pattern = array();
    $search_pattern[0] = "/([?&]newpage)=[^&]*/";
    $search_pattern[1] = "/([?&]next)=[^&]*/";
    $search_pattern[2] = "/angle_\d+/";

    $search_replacements = array();
    $search_replacements[0] = '';
    $search_replacements[1] = '';
    $search_replacements[2] = 'angle';

    $new_url = preg_replace($search_pattern, $search_replacements, $url);

    header("Location: index.php?page=". $_GET["newpage"] ."&".$new_url);
}
4

1 に答える 1

0

それをすべて行う代わりに、持っている値をフォームに貼り付けて、ブラウザにクエリ文字列を再作成させます。

于 2012-08-06T06:56:11.460 に答える