2010-11-26 4 views
1

こんにちは。私は、データベーステーブルに入力される100-500のフォーム入力フィールドからのユーザー入力を必要とするプロジェクトを持っています。多くの分野を扱う最良の方法は何かに関するアドバイスが必要です。100以上の入力フィールドを持つフォームを処理する最も良い方法は何ですか?

ユーザーにデータベースに一度に10を入力させ、「さらにデータを入力しますか?」と尋ねるのが最善でしょうか?追加されたエントリでテーブルを更新しますか?ユーザーが連続して10を入力して、すべてのフィールドを持って一度データベースに入力されながら

または

私はセッションで入力の配列を保持してもらえますか?

返信いただきありがとうございます。

+1

...うわー、それはたくさんのフォームです... –

答えて

2

私はデータを入力するためのいくつかの種類の「ウィザード」インターフェースを持っていて、ユーザーが進むにつれてセッションにページを格納します。そう、はい、後者の考えは健全です。

+0

PHPとMySQLは、一度に500データエントリを処理する問題はありませんか? – Tableking

+0

もう一つの簡単な質問です。セッションに追加する前に、またはデータがデータベースに追加される前に、ユーザーの入力を「安全」にする必要がありますか?あなたの返信をありがとう。 – Tableking

+0

これはPHPセッションに多大な影響を与えるべきではありませんが、単一のMySQLテーブルに500のフィールドがある場合は、深刻なアーキテクチャ上の問題があります。 –

0

このような大きなフォームの場合、データをいつ保存するかの質問以外に、一致する隠し入力タグを使用して入力タグを倍増させたいと思います。たとえば、<input name='test' > I will also create <input type='hidden' name='test-orig' value='orig-value' />と入力し、サーバー上でフォームの入力タグと非表示のオリジナルを比較し、データが変更されているかどうかを確認します。これにより、変更されたデータ要素に対してのみINSERT/UPDATEを行い、すべての単一値をINSERT/UPDATEすることはありません。

また、ON DUPLICATE KEY UPDATE構文を調べることをお勧めします。データベーステーブルを正規化し、変更されたデータ要素のみを更新するようにしてください。

PHPセッションでデータを保存するのではなく、論理ブロックでデータベースに直接保存します。これにより、セッションがタイムアウトした場合にユーザーが情報を失うことがなくなりますフォームが巨大な場合に起こります)。次に、ユーザーがレコード全体を保存したときと部分的に保存したときを判断するために、保留中のレコードフラグをテーブル構造に追加します。

0

phpの一般的な硬化ソリューション、たとえばsuhosinは、ポスト変数の最大数を制限します。これは共有ホスティングでは一般的であり、黙って失敗する可能性があります。

また、ポスト変数に配列構文を使用することを検討してください。

例: "user []"のような名前を持つ入力は$ _POST変数を配列として設定します。

関連する問題