1

私は、訪問者がフォームに記入して、さまざまな市場の製品やサービスの見積もりを要求できるプラットフォームを構築しています。

例: 訪問者の John Doe は、屋根にソーラー パネルを設置したいと考えています。彼は私たちのウェブサイトにアクセスし、自分のカテゴリー (ソーラーパネル) を選び、フォームに記入します。その後、彼の連絡先の詳細は、すべてのソーラー パネル サプライヤーに送信されます。

見積もりをリクエストできるすべてのカテゴリは、categoryテーブルに保存されます。

id | name
-------------------
1  | solar panels
2  | car rental

各カテゴリには、記入する必要がある 2 つのフォームがあります。

  1. 訪問者の連絡先の詳細と、見積もりを受け取りたいカテゴリが記載された 1 つのフォーム。このフォームには、すべてのカテゴリに同じフィールドがあり、inquiryテーブルに保存されます。

    id | fk_id_category | name     | email              | Region
    ----------------------------------------------------------
    1  | 1              | John Doe | johndoe@gmail.com  | New York
    2  | 2              | Jane Doe | janedoe@gmail.com  | California
    
  2. そのカテゴリに関連する特定の質問を含む 1 つのフォーム。これらはcategory_fieldテーブルに保存されます。

    id | fk_id_category | label
    ---------------------------------------------------------------
    1  | 1              | What type of roof do you have?
    2  | 2              | What type of car do you want to rent?
    3  | 2              | For how long do you want to rent the car?
    

    これらの質問に対する回答は、次のinquiry_detailテーブルに格納されます。

    id | fk_id_inquiry | fk_id_category_field | answer
    ---------------------------------------------------------------
    1  | 1             | 1                    | A flat roof
    2  | 2             | 2                    | An SUV
    3  | 2             | 3                    | One week
    

Doctrine 1.2.4 を使用していますが、カテゴリ固有の回答 (表にあるもの) を保存する方法を知りたいと思っていますinquiry_detail

現在、次の解決策がありますが、より良い方法があるはずだと思います。name各フォーム要素の属性をテーブルid内の対応するレコードに設定します。category_field

<label for="2">What type of car do you want to rent?</label>
<input type="text" name="2" />
<label for="3">For how long do you want to rent the car?</label>
<input type="text" name="3" />

フォームが送信されると、配列を繰り返し処理し、要素ごと$_POSTに新しいinquiry_detailレコードを作成します (今のところ気にしないでくださいfk_id_inquiry)。

foreach($_POST as $key => $value) {
    $inquiryDetail = new Model_Inquiry_Detail();

    $inquiryDetail['fk_id_category_field']   = $key;
    $inquiryDetail['answer']                 = $value;

    $inquiryDetail->save();
}
4

0 に答える 0