-1

GETメソッドを使用したフォームがあります。このフォームには、更新するフィールドが大量に含まれている可能性があります。そのため、URLが長くなりすぎることがあります。そのため、フィールドの各グループを個別に更新するためのボタンをさらに追加できると思いました。

問題は、新しいボタンを追加しても、すべてのFORMパラメーターが送信されることです。一部のパラメータのみを送信するにはどうすればよいですか?


編集:このページはそれ自体からだけでなく他のページからも呼び出されるため、GETをPOSTに置き換えることはできません。したがって、2つのパラメーターをGETとして使用する必要があります。私は試した

if(isset($_GET['param_id1'])) {
           $param_id1 = $_GET['param_id1'];
       } else if(isset($_POST['param_id1'])){
           $param_id1 = $_POST['param_id1'];
       }

そしてフォーム内-

printf ("<form method='post' action='update_order.php'>"); // Use POST instead of GET
printf ("  <input type='hidden' name='param_id1' value='$param_id1'>");

しかし、それも機能しませんでした。

編集2: URLも変更するのを忘れたため、機能しませんでした-

<form method='post' action='update_order_test_post.php'> 

私のフォーム: [私はPHPを使用しています]

<form method='get' action='update_me.php'> 
 . . . 
<input type='submit' name='Submit' value='Update All'>   <!-- Original button -->
 . . . 
<input type='submit' name='Submit' value='Update One Line'> <!-- New button -->

元のURL:わかりやすくするために改行で区切ります

http://mySite.com/update_order.php?
&infoA=aaa
&infoB=bbb
&infoC=ccc
&Submit=Update
&param1[1]=11
&param2[1]=21
&param3[1]=31
&param4[1]=41
. . . 
&param1[2]=211
&param2[2]=221
&param3[2]=231
&param4[2]=241
. . . 
&param1[3]=3311
&param2[3]=3321
&param3[3]=3331
&param4[3]=3341
. . . 
&param1[4]=411
&param2[4]=421
&param3[4]=431
&param4[4]=441
. . . 
. . . 

次のフィールドのみを新しいURLに送信したい。たとえば、3行目のボタンがクリックされた場合。

http://mySite.com/update_order.php?
&infoA=aaa
&infoB=bbb
&infoC=ccc
&Submit=UpdateOneLine
&param1[3]=3311
&param2[3]=3321
&param3[3]=3331
&param4[3]=3341
. . . 

ありがとう、アタラ。

4

2 に答える 2

2

POSTを使用してください。それが目的です。

POSTを使用する場合は、送信されるアイテムの数を減らすことを心配する必要はありません。多数のアイテムのように見えるかもしれませんが、データに関しては、おそらく最大10Kの送信データしか処理していません。ページの残りの部分は50〜300Kの範囲にある可能性が高いため、ごく一部にすぎません。

formメソッドをPOSTに変更し、php受信ページで必要なパラメーターを使用するだけです。

更新 ただし、特定の質問に答えるために、各行を個別のフォームにすると、ユーザーが送信ボタンをクリックしたときにのみその行が送信されます。

于 2012-05-20T10:21:09.267 に答える
1

@Atara POST を使用すると、間違いなく問題が解決します。ブラウザのアドレス バーで POST アクションを実行できないためです。

于 2012-05-20T10:51:06.980 に答える