基本的に、誰かがこのフォームに記入する前に、「部門」の入力に応じて一定数の「出版物の種類」を生成するフォームがあります。(認識される部門固有のパブリケーションタイプ。)各パブリケーションタイプに対応するフィールドがいくつかあります...(これらは同じフィールドであるため、各タイプには...たとえば3つのフィールドがあります。)私はこのデータを読み取り、データベースに配置するループ。ただし、フィールドの1つが入力されていない場合、その特定のフィールドの値は完全にスキップされ、データの入力が破棄されます。
例:ユーザーには3つのフィールドがあり、これらの3つのフィールドが3回繰り返されます。ユーザーは、最初の行に3つ、2番目の行に2つ、3番目の行に3つ入力します。それで:
- 最初のフィールド配列:1、1、1
- 2番目のフィールド配列:1、1
- 3番目のフィールド配列:1、1、1
リストに表示されるように、2番目のフィールド配列でその空のフィールドをマークする方法を理解する必要があります。フィールドにデフォルト値を設定することはできますが、誰かがそのデータを簡単に削除する可能性があり、名前/タイトルフィールドに「なし」などがあると厄介に思えます...
何か案は?
編集:コードスニペット(注:重要でないスタイルタイプのものをすべて切り取りました...)
<cfoutput query = "getType_PUB">
Publications: #rName# <br />
<input type = "hidden" name = "scholarActivities" value = "#rName#" />
<input type="text" name="inpress09" size = "8"/><br />
<input type="text" name="published09" size = "8"/><br />
<input type="text" name="published08" size = "8"/><br />
<input type="text" name="published07" size = "8"/><br />
</cfoutput>
<cfoutput><input type = "hidden" name = "recordcountPub" value = "#getType_PUB.recordcount#" /></cfoutput>
//////////////DB/////////////
<cfif #form.recordcountPUB# EQ 1>
<cfquery name = "insertSActivities" datasource="cas_evaluation">
INSERT INTO scholar_publications (faculty, scholarActivities, submit09, inpress09, published09, published08, published07)
VALUES ( '#form.name#', '#form.scholarActivities#', '#form.submit09#', '#form.inpress09#', '#form.published09#', '#form.published08#', '#form.published07#')
</cfquery>
<cfelse>
<cfloop from="1" to="#form.recordcountPUB#" index="i">
<cfquery name = "insertSActivities" datasource="cas_evaluation">
INSERT INTO scholar_publications (faculty, scholarActivities, submit09, inpress09, published09, published08, published07)
VALUES ( '#form.name#', '#ListGetAt(form.scholarActivities, i, ',')#', '#ListGetAt(form.submit09, i, ',')#', '#ListGetAt(form.inpress09, i, ',')#', '#ListGetAt(form.published09, i, ',')#', '#ListGetAt(form.published08, i, ',')#', '#ListGetAt(form.published07, i, ',')#')
</cfquery>
</cfloop>
</cfif>