0

私は適切なサイズの HTML フォームを持っています。これに加えて、フォームの特定の部分にさらに多くの「レコード」を作成できる Javascript があります。合計で、50 以上の INPUT 要素について話している可能性があります。

このすべてのデータを PHP で処理する最善の方法を考えています。

POST を介して通常の INPUT 要素として渡し、PHP にすべてデコードさせます。

または、フォーム入力要素の名前を失って POST に表示されないようにし、submit イベントで Javascript を使用して、必要なすべての入力要素をオブジェクトにエンコードし、そのオブジェクトを JSON にエンコードして、単一の非表示の入力要素を介して渡します。 .

後者の方がPHP側でより明確なコードを記述できるようになり、基本的にjson_decode()を介して実行されるとオブジェクトとして渡され、htmlの変更からより抽象的になると考えています。前者は JavaScript を必要としませんが、html との同期を維持する必要があります。

または私が考えていなかった別の方法。

どちらが最善の方法だと思いますか?

4

3 に答える 3

0

「より明確なコード」を書くのに JS は必要ありません。この方法で、データの配列をフォームから PHP に渡すことができます。これも十分に明らかです。私の他の回答から得た 、これを行うことができます(前の質問はチェックボックスに関するものでしたが、どの入力タイプでも機能するはずです):

<input type="checkbox" name="answers[set1][]" value="apple" />   //imagine checked
<input type="checkbox" name="answers[set1][]" value="orange" />  //imagine checked
<input type="checkbox" name="answers[set1][]" value="grape" />
<input type="checkbox" name="answers[set2][]" value="airplane" />   //imagine checked
<input type="checkbox" name="answers[set2][]" value="train" />  //imagine checked
<input type="checkbox" name="answers[set2][]" value="boat" />
<input type="checkbox" name="answers[solo]" value="boar" /> //single type value. note that there is no [] in the end

リクエスト配列で次のようになります(POSTなど):

$_POST[] = array(
    'answers' => array(
        'set1' => array('apple','orange'),   //unchecked items won't be included
        'set2' => array('airplane','train'), //unchecked items won't be included
        'solo' => 'boar'
    )
);
于 2013-09-23T11:31:05.577 に答える
0

私の経験では、大きなフォームから非常に大きなフォームまで、入力フィールドをタグ付きの独自のフォームに保持するのが最も簡単であることがわかりましたが、入力フィールドに somefunctionalname_01、somefunctionalname_02 などのパターン名を付け、サーバーを持っています。 -side プロセッサは、このクラスの変数を探します。ビジネス コードは、パラメータが属するカテゴリに従ってパラメータを並べ替えることができ、後で構造化された方法で自由に使用できます。

例えば

$MyBroadCategories = array('somefunctionalname', 'someotherfunctionalname');
foreach($MyBroadCategories as $Cat) {
  foreach($_POST as $key => $val) {
    if (preg_match('/^' . $Cat . '_(\d+)$/', $key, $bits)) {
      // Please business code here with this particular class of variables
      // Or add them to an specific array of candidates for later use.
    }
  }
}

} }

どのような場合でも、サーバーが処理するパラメーターの最大数 (デフォルトは 1000) を超える場合max_input_varsは、PHP 構成のパラメーターを調整することを検討してください。

于 2013-09-23T11:11:03.150 に答える