1

長文になりますが、ご了承ください。PHP はかなり得意ですが、データベース設計の知識は乏しいです。データベースの設計を指揮することは、アプリケーションで作業する際に最も重要なことであり、コツをつかめば物事がいかに簡単になるかを理解したので、私はそれに取り組んでいます. このスレッドが始まったのも、データベースの相互作用に関する私の知識が乏しいためです。

私は基本的に、以下の画像に似た構造を持つ約 40 のフォームを持っています。

フォーム構造

列と行の数はフォームごとに異なりますが、上に示したようにほぼ同様の構造に従います。

私が達成しようと計画していること

  • 単一または同じ php ページを使用して、40 のフォームすべてを処理 (つまり、データベースにデータを挿入) します。<form action="process.php">つまり、すべてのフォームに同じものを使用するつもりです。
  • ハードコーディングは避けてください。process.phpコードを可能な限り動的に保ちます。

道路封鎖

  • 各フォームのパラメーターの数はさまざまであるため、各フォームに存在する行の数を調べる方法を見つける必要があります。
  • フォームで使用されている要素 (ラジオ ボタン、チェックボックス、ドロップダウン、テキストエリア、テキスト ボックスなど) に名前を付ける方法を決定するのが難しい。
  • 挿入の進め方がわからず困っています。一度に 1 行ずつ挿入するのが適切なようですが、どうすればこれを実現できますか? たとえば、ループを使用する場合、最初の反復で関連するデータをAmbiance挿入する必要があります。2 番目のループでは、関連するデータをTV Room挿入する必要があります。問題は、それに応じてコーディングする方法ですか?

私が心に留めていること

  • フォームの列 (パラメーター、要件を満たす、観察、ステータス、コメント) は、MySql テーブルのフィールドになります。

  • 次に、ループを使用して一度に 1 行ずつテーブルに挿入します。

  • フォームで使用される要素に名前を付けるために配列を使用します。たとえば、最初の行の要素には ambiance[requirement]、ambiance[observation]、ambiance[status]、ambiance[remarks]、 2行目など。次に、挿入を使用して1行で行うことができますINSERT INTO tablename (implode(',', array_keys($ambiance))) VALUES (implode(',', $ambiance))

これが何についてではないか

  • コードの提供/郵送を依頼する。

  • Give me teh codez私の操作方法ではありません。タスクの進め方についての指示を求めているだけです。

これについて

  • 提案を求める。

  • 正しい方向に進んでいるかどうかを判断します。

  • 別の方法があるかどうかを尋ねます。

4

1 に答える 1

1

私は似たようなことをしましたが、まったく同じではありません。私はこれらの2つのテーブルを使用しました:

    • ID
    • 名前(フィードバック、コメント、調査など)

  • FormFields **
    • ID
    • FormID
    • キャプション(名前、会社、住所など)
    • サブキャプション(フルネームを入力するなど)
    • 必須
    • DataType(整数、数値、文字列、電子メールなど)
    • MaxLength

**その他のアイデアについては、データベーステーブルのスキーマを参照してください。

あなたの場合、テーブルの別のペアが必要です:

  • FormSubmission
    • ID
    • 日にち

  • FormSubmissionValues
    • ID
    • FormSubmissionID
    • FormFieldID(FormIDを推測するために使用するか、FormSubmissionテーブルにFormIDを追加することができます)
    • 値(任意の値を収容するのに十分な大きさのフィールド)

いくつかのキャッチがありました。いくつか書き留めておきます。

  • UIは、データ型によって異なる必要があります(整数/数値の場合は小さな10文字の入力、ブール値の場合はチェックボックス、テキストの場合はtextarea)
  • リストボックスの扱い方がわからない。おそらく、これには別のテーブルが必要です
  • すべてが汎用テキストフィールドに格納されるため、インデックスを適切に使用できません
  • クライアント側の検証は可能ですが、困難です
  • テーブルは非常に一般的である必要があります。私の経験に基づくと、これには、xがすべてのyで機能することを保証するための追加の作業が必要です。
于 2012-11-01T09:26:33.700 に答える