1

必要な入力フィールドの量を変更できる動的フォームを作成しました。これは、15 人のバンド メンバーがいて 15 のフィールドが必要な場合や、1 つのバンドに 2 つのフィールドが必要な場合があるためです。 jQueryを使用。クエリの実行中/実行前にチェックを実行して、それらのフィールドが入力されているかどうか、およびそれらの値をデータベースに入力するかどうかを確認するにはどうすればよいですか? ありがとう。

編集1:

以下のコードのようなものを考えていました。しかし、名前が であり、その後に数字が続くすべての現在のフィールドをカウントするには、ループを実行する必要がありますmemberName。最初の空のフィールドで停止するのではなく、それらすべてを実行します。値が空白の場合は何もしません。値がある場合は、それをテーブルに挿入します。

<cfquery datasource="exampledatasource" name="insertbandmembers">
  Insert Into members(members_name)
  Values (memberName#i#)
</cfquery>
4

3 に答える 3

1

静的な番号ループを使用しますが、シーケンス内の番号が渡されないと中断します。jQueryのフィールド数を数えて、フォーム送信と一緒に渡すこともできます

<cfquery datasource="exampledatasource" name="insertbandmembers">
  INSERT Into members(members_name)
  VALUES
  <cfloop index="i" from="1" to="15">
    <cfif structKeyExists(form, 'memberName#i#') AND len(form['memberName#i#'])>
      <cfif i neq 1>, </cfif>
      ( <cfqueryparam cfsqltype="cf_sql_varchar" value="#form['memberName#i#']#"> )
    <cfelse>
      <cfbreak> 
    </cfif> 
  </cfloop>
</cfquery>
于 2013-02-13T16:39:06.800 に答える
1

(これはコメントから始まりましたが、長すぎます..)

アプローチにはさまざまな方法があります。私の好みは、コメントで言及されている Travisです。基本的に、非表示のフォーム フィールドにメンバーの総数を jquery に格納します。次に、その値を使用してメンバー フィールドをループし、値を検証して、必要に応じて挿入します。

これを行うために、 Danまたはjamckinnの例を簡単に適応させることができます。彼らが<cfqueryparam>SQLインジェクションを防ぐために使用していることに気づきましたか? また、これらは関連する挿入であるため、すべてを 1 つの 内にラップする必要があります<cftransaction>。これにより、インサートが単一のユニットとして処理されます。それらはすべて成功するか、すべて失敗するかのどちらかです - 一緒に。

    <cfparam name="form.totalFields" default="0" >

    <cfloop from="1" to="#val(form.totalFields)#" index="x">
        <!--- extract current name --->
        <cfset memberName = trim(FORM["memberName"& x])>

        <!--- insert NON-empty values --->
        <cfif len(memberName)>
            <cfquery datasource="exampledatasource" name="insertbandmembers">
                INSERT INTO members ( members_name )
                VALUES 
                ( 
                   <cfqueryparam value="#memberName#" cfsqltype="cf_sql_varchar"> 
                )
            </cfquery>
        </cfif>
   </cfloop>
于 2013-02-13T18:46:06.733 に答える
1

私はこのようなことをします:

<cfloop list="#form.fieldnames#" index="ThisElement">
    <cfif left(ThisElement, 10) is "memberName">
       <cfset ThisValue = form[ThisElement]>

       <cfif len(ThisValue)>
           <cfquery name="AddRecord">
              Insert Into members(members_name)
              Values 
              ( <cfqueryparam cfsqltype="cf_sql_varchar" value="#ThisValue#"> )
           </cfquery>
       </cfif>  <!--- len(thisvalue) --->

    </cfif>  <!--- left(ThisElement, 10) is "memberName" --->
</cfloop>
于 2013-02-13T17:43:46.977 に答える