0

私は、ユーザーがサインアップするwufooformstack.comと同様のフォーム処理Webサービスを設計し、ユーザーがフォームにコピーして貼り付けるフォームアクションを作成し、そのデータをデータベースに保存してリダイレクトします。彼らのありがとうページに。

PHPとを使用してビルドしMySQLます。これまでのところ、私は基本的な機能を理解していますが、抽象的なレベルで動けなくなるのは、ユーザーデータを保存するための最良の方法です。

私が最初に考えたのは、作成された新しいフォームごとに新しいテーブルを作成することでした。

今考えているのは、dataたとえば50フィールドという名前の汎用テーブルを作成します。これは、field1, field2, field3, field4全員のデータを格納し、そのテーブルを別のテーブルにリンクしてfieldnames、ユーザーが「ダッシュボード」をカスタマイズしてフィールドに名前を付けたように見せることができます。

私はこれをどのように処理するのが最善かよくわかりません。

4

2 に答える 2

2

Use two tables for the forms and fields plus one for the answers:

form(id, title, user ...)
field(id, form_id, order, title, type ...)
answer(field_id, value, ...)

That way you don't limit your users to a certain number of fields.

于 2013-01-28T14:50:57.507 に答える
0

これにはいくつかの解決策があります。データを入力した後、データをどのように処理するかによって異なります。

hsanの答えは、一般に「エンティティ属性値」またはEAVとして知られています。柔軟性があり、さまざまな種類のデータを保存できます(50を超える回答が必要な場合でも不足することはありません)。別のWebページを再構築するために(たとえば、フォームの所有者を表示するために)データを保存している場合、それはかなりうまく機能します。レポートなど、「人間が読める」ものを作成する場合は、もう少し注意が必要です。データについて質問したい場合は、注意が必要です。「いくら稼ぎますか」という質問に対するすべての回答を見つけることを想像してください。回答は「25000-35000」で、ユーザーはお気に入りの色も「赤」と言っています。 。

XMLまたはJSONドキュメントにデータを保存することもできます。これにより、SQLでデータを推論するのが難しくなりますが、データをレポートまたはPDFに変換するのは非常に簡単になります。

于 2013-01-28T15:07:13.347 に答える